Rails 3:阻止用户对自己的内容进行投票

时间:2011-10-19 04:26:28

标签: ruby-on-rails cancan

我正在使用Devise和CanCan在我的应用中设置身份验证和授权。现在我正在构建一个Like系统,允许用户喜欢/不喜欢给定的模型。防止用户对自己的内容进行投票的最佳方法是什么?

现在我正在检查Controller,如果内容所有者与当前用户相同,但在我看来,这个逻辑应该在Ability模型上。

2 个答案:

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