Ruby on rails-从mod访问CanCan的can方法

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

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

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

user.can?(:update, @article)
Tom Lehman asked 2020-06-27T11:10:14Z
1个解决方案
68 votes

github上有一个维基条目:[https://github.com/ryanb/cancan/wiki/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)
jigfox answered 2020-06-27T11:11:19Z
translate from https://stackoverflow.com:/questions/3293400/access-cancans-can-method-from-a-model