我正在使用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;,但有没有更好的方法让用户只能通过控制器在投票之间切换?
感谢。
答案 0 :(得分:1)
应该实现应用程序代码的翻转,而不是改变库的现有行为。