【问题标题】:Allowing users to 'toggle' up_vote and down_vote using thumbs_up gem in Rails允许用户在 Rails 中使用 thumbs_up gem '切换' up_vote 和 down_vote
【发布时间】:2017-07-07 04:42:06
【问题描述】:

我正在使用 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”,但有没有更好的方法让用户只能通过控制器在投票之间“切换”?

谢谢。

【问题讨论】:

  • 你为什么不检查 gemacts_as_votable 它内置了该功能,它还支持加权投票。
  • @CoreyGibson 谢谢,我也浏览过那个 gem,我想我会在阅读后切换(优点 gem 最近又出现了一个错误)。 :)

标签: ruby-on-rails


【解决方案1】:

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

【讨论】:

  • 感谢您的回答。在这种情况下,我是否需要允许选民多次投票,然后在应用中实现条件?
  • 你想要做什么@sofarsophie 在你想要编辑现有投票而不是创建新投票的第二个请求。但是,是的,有更好的宝石来解决这个问题。
  • @ThomasR.Koll 好吧,我想我可以试试。你对我可以使用的替代宝石有什么建议吗(你指的是acts_as_votable吗?)?当我重新启动我的服务器时,这个优点宝石有一个显然仍在修复的无方法问题......我想我会切换到一个新的。
  • acts_as_votable 正如@Corey Gibson 推荐的那样。
  • 谢谢,去看看。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 1970-01-01
相关资源
最近更新 更多