从模型中访问CanCan的`can?`方法

时间:2010-07-20 19:06:20

标签: ruby-on-rails cancan

您可以使用current_user以这种方式从视图或控制器获取can?的权限:

  <% if can? :update, @article %>
    <%= link_to "Edit", edit_article_path(@article) %>
  <% end %>

如何使用以下语法从模型访问此功能:

user.can?(:update, @article)

1 个答案:

答案 0 :(得分:67)

github上有一个wiki条目:http://wiki.github.com/ryanb/cancan/ability-for-other-users

您需要像这样更改用户模型:

class User < ActiveRecord::Base
  def ability
    @ability ||= Ability.new(self)
  end
  delegate :can?, :cannot?, :to => :ability
end

然后你可以检查这样的能力:

user.can?(:update,@article)