我正在使用Devise和CanCan在我的应用中设置身份验证和授权。现在我正在构建一个Like系统,允许用户喜欢/不喜欢给定的模型。防止用户对自己的内容进行投票的最佳方法是什么?
现在我正在检查Controller,如果内容所有者与当前用户相同,但在我看来,这个逻辑应该在Ability模型上。
答案 0 :(得分:1)
我没有使用cancan的经验,但也许您可以像这样使用块:
can :like, Product do |product|
product.try(:owner) != user
end
答案 1 :(得分:0)
在你的ability.rb中你需要做这样的事情:
class Ability
include CanCan::Ability
def initialize(user)
...
can :like, Product, :user_id => user.id
...
end
end
然后在控制器中:
@product.like if can? :like, @product
同样在您的视图中,您可以隐藏类似按钮:
<% if can? :like, @product%>
<%= link_to "Like", like_product_path(@product) %>
<% end %>