Ruby on rails Rails 3:阻止用户对自己的内容进行投票
我正在使用Desive和CanCan在我的应用程序中设置身份验证和授权。现在我正在构建一个Like系统,允许用户喜欢/不喜欢给定的模型。阻止用户对自己的内容进行投票的最佳方式是什么Ruby on rails Rails 3:阻止用户对自己的内容进行投票,ruby-on-rails,cancan,Ruby On Rails,Cancan,我正在使用Desive和CanCan在我的应用程序中设置身份验证和授权。现在我正在构建一个Like系统,允许用户喜欢/不喜欢给定的模型。阻止用户对自己的内容进行投票的最佳方式是什么 现在,我正在检查控制器中的内容所有者是否等于当前用户,但在我看来,此逻辑应该在能力模型上。我没有使用cancan的经验,但也许您可以像这样使用block: can :like, Product do |product| product.try(:owner) != user end class Ability
现在,我正在检查控制器中的内容所有者是否等于当前用户,但在我看来,此逻辑应该在能力模型上。我没有使用cancan的经验,但也许您可以像这样使用block:
can :like, Product do |product|
product.try(:owner) != user
end
class Ability
include CanCan::Ability
def initialize(user)
...
can :like, Product, :user_id => user.id
...
end
end
在您的ability.rb中,您需要执行以下操作:
can :like, Product do |product|
product.try(:owner) != user
end
class Ability
include CanCan::Ability
def initialize(user)
...
can :like, Product, :user_id => user.id
...
end
end
然后在控制器中:
@product.like if can? :like, @product
在视图中,您还可以隐藏like按钮:
<% if can? :like, @product%>
<%= link_to "Like", like_product_path(@product) %>
<% end %>
Igor,我想这就是我的想法。我已经为Like创建了操作,但我不确定如何将其与您示例中的产品结合起来。我现在的能力是:
can:create,Like can:update,Like do | Like | Like.try(:user)==user end