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

Tom*_*man 46 ruby-on-rails cancan

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

  <% if can? :update, @article %>
    <%= link_to "Edit", edit_article_path(@article) %>
  <% end %>
Run Code Online (Sandbox Code Playgroud)

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

user.can?(:update, @article)
Run Code Online (Sandbox Code Playgroud)

jig*_*fox 68

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
Run Code Online (Sandbox Code Playgroud)

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

user.can?(:update,@article)
Run Code Online (Sandbox Code Playgroud)

  • 对于 CanCanCan:https://github.com/CanCanCommunity/cancancan/wiki/Ability-for-Other-Users (4认同)