我使用设计并创建了两个模型,医生和患者。当我写load_and_authorize_resource
cancan时给出了一个例外
undefined local variable or method `current_user
我怎样才能对他们两个都使用cancan?
我使用设计并创建了两个模型,医生和患者。当我写load_and_authorize_resource
cancan时给出了一个例外
undefined local variable or method `current_user
我怎样才能对他们两个都使用cancan?
应用程序控制器中有一个方法调用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/ability.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
.
.
.
希望对您有所帮助,您还可以查看 cancan完整文档