允许用户切换'在Rails中使用thumbs_up gem的up_vote和down_vote

时间:2017-07-07 04:42:06

标签: ruby-on-rails

我正在使用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'如果他们碰巧喜欢错误(为了用户体验&#39)。我试图将范围更改为:

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

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

我可以通过在我的视图中使用条件来考虑这样做:

<% 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 %>

评论Code&#39; 1&#39;,但有没有更好的方法让用户只能通过控制器在投票之间切换?

感谢。

1 个答案:

答案 0 :(得分:1)

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