Могу ли я использовать канкан со многими ресурсами? - PullRequest
4 голосов
/ 03 марта 2011

Я использую устройство и создал две модели, Доктор и Пациент. Когда я пишу load_and_authorize_resource cancan дает исключение

undefined local variable or method `current_user

Как я могу использовать канкан для них обоих?

Ответы [ 2 ]

4 голосов
/ 22 июня 2011

В Application Controller есть метод current_ability, вы можете просто перезаписать его.

Изменение документации по current_ability

Это будет выглядеть примерно так

def current_ability
  @current_ability ||= Ability.new(current_user)
end

Но вы можете изменить его на

def current_ability
  if current_doctor
    @current_ability ||= Ability.new(current_doctor)
  else
    @current_ability ||= Ability.new(current_patient)
  end
end

. Это позволит методу инициализации в app / models /ility.rb получать либо current_patient, либо current_doctor, в зависимости от случая.,Вы можете настроить его так, чтобы он выглядел примерно так:

class Ability
  include CanCan::Ability

  def initialize(resource)
    if resource.class == Patient
      can, Read Something
      can, Edit Other
      .
      .
      .
    else
      can, Read Something
      can, Edit Other
      .
      .
      .
    end
      .
      .
      .

Надеюсь, что эта помощь, вы также можете увидеть канкан Полный документ

0 голосов
/ 03 марта 2011

Вы можете найти полную конфигурацию Devise и Cancan здесь: Часть 1 Часть 2

...