Access CanCan's `can?` method from a model

瘦欲@ 提交于 2019-11-26 19:14:20

问题


You can get the current_user's permissions from a view or controller using can? in this fashion:

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

How can I access this functionality from a model using this syntax:

user.can?(:update, @article)

回答1:


There's a wiki entry at github for this: https://github.com/ryanb/cancan/wiki/ability-for-other-users

You need to change your User model like this:

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

Then you can check abilities like this:

user.can?(:update,@article)


来源:https://stackoverflow.com/questions/3293400/access-cancans-can-method-from-a-model

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!