acts_as_votable: иметь два типа голосования для одного и того же объекта
Я реализовал систему голосования с помощью gem Act_as_votable на Ruby on Rails, для того, чтобы понравиться постам (upvote/downvote). Теперь я хочу создать еще один тип голосования для постов. Как принять ответ / не принимать ответ. Возможно ли это сделать?
1 ответ
Это действительно возможно.
Хотя вы можете потерять некоторые из вспомогательных методов.
Acts As Votable позволяет работать с областями действия. Так что вы можете легко сказать
current_user.likes @post, voter_scope: "endorsement"
и вы можете проверить все голоса для одобрения с
@post.find_votes_for vote_scope: "endorsement"
И то же самое для принятого ответа
current_user.likes @post, voter_scope: "acceptance"
@post.find_votes_for vote_scope: "acceptance"
- Будьте осторожны при использовании областей с такими словами, как "нравится", "не нравится" и "голосуйте" - так как они являются именами методов в некоторых случаях использования этих драгоценных камней и могут привести к путанице.
Поэтому, несмотря на то, что в документации сказано, что вы можете иметь только один голос на модель избирателя, на самом деле это означает, что вы можете иметь только один голос SCOPED на модель.