我使用设计并创建了两个模型,Doctor和Patient。
当我写load_and_authorize_resource
cancan给出异常时
undefined local variable or method `current_user
我如何在两者中使用cancan?
答案 0 :(得分:4)
在Application Controller中有一个名为current_ability
的方法,你可以简单地覆盖它。
Changing current_ability documentation
它看起来像这样
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 / ability.rb中的initialize方法根据具体情况接收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
.
.
.
我希望这有帮助,你也可以看到cancan Full doc
答案 1 :(得分:0)