web-dev-qa-db-ja.com

モデルからCanCanの `can?`メソッドにアクセスする

次の方法でcurrent_userを使用して、ビューまたはコントローラーからcan?のアクセス許可を取得できます。

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

この構文を使用して、モデルからこの機能にアクセスするにはどうすればよいですか。

user.can?(:update, @article)
47
Tom Lehman

このためのwikiエントリが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)
67
jigfox