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

50

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

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

我如何使用这个语法从一个模型中访问此功能:

user.can?(:update, @article)

6
好问题。很高兴你也得到了一个好答案! - Andrew
1个回答

75

这个问题在github上有一个wiki条目:https://github.com/ryanb/cancan/wiki/ability-for-other-users

你需要按照以下方式更改你的User模型:

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

然后您可以这样检查权限:

user.can?(:update,@article)

4
对于CanCanCan: https://github.com/CanCanCommunity/cancancan/wiki/Ability-for-Other-Users本文介绍了CanCanCan(一个用于Ruby on Rails应用程序的授权库)如何为其他用户设置权限。包括使用cannot方法、定义别名和创建条件语句等内容。此外,还提供了一些示例代码来说明如何实现这些功能。 - vmarquet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接