我正在使用thumbs_up gem在我的应用中允许“顶”。

gem包含以下代码,以确保一个用户不能投票两次-

Code '1'
# Comment out the line below to allow multiple votes per user.
validates_uniqueness_of :voteable_id, :scope => [:voteable_type, :voter_type, :voter_id]


但是我希望我的用户能够一次“ up_vote”,如果他们偶然喜欢(出于用户体验的缘故),那么就可以“ down_vote”。我试图将范围更改为:

validates_uniqueness_of :voteable_id, :scope => [:voteable_type]


但这将允许用户连续两次“ up_vote”。相反,如果可投票对象已经“ up_vote”,则用户只能“ down_vote”,反之亦然。

我可以考虑通过使用条件来做到这一点,例如:

<% if !current_user.voted_for?(voteable_name) %>
     <%= link_to('Like', vote_up_question_answer_path(voteable_name), :method => :post) %>
<% else %>
     <br>
     <%= link_to('Unlike', vote_down_question_answer_path(voteable_name), :method => :post) %>
<% end %>


并注释掉代码“ 1”,但是有没有更好的方法可以使用户仅通过控制器在投票之间“切换”?

谢谢。

最佳答案

应该可能实现应用程序代码的翻转,而不是更改库的现有行为。

07-26 09:35
查看更多