Доступ к методу CanCan "can?" Из модели - PullRequest
45 голосов
/ 20 июля 2010

Вы можете получить права доступа current_user от представления или контроллера, используя can? следующим образом:

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

Как я могу получить доступ к этой функции из модели, используя этот синтаксис:

user.can?(:update, @article)

1 Ответ

67 голосов
/ 20 июля 2010

В github есть запись в вики: 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

Тогда вы можете проверить способности следующим образом:

user.can?(:update,@article)
...