В 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
.
.
.
Надеюсь, что эта помощь, вы также можете увидеть канкан Полный документ