我在我正在构建的应用程序中使用 CanCan 作为基于角色的管理系统。它是一种网上商店的模板,因此管理员可以在他/她有权访问的每个网上商店中担任不同的角色。例如:在网店 1 中,他是版主,在网店 2 中,他是编辑。
所以我在CanCan的能力类中需要做的是检查当前用户在当前店铺(current_shop)中的角色是什么。我写了这个:
class Ability
include CanCan::Ability
def initialize(admin)
if admin.supervise?(current_shop, controller_gsub)
can :manage, :all
elsif admin.manage?(current_shop, controller_gsub)
can :manage, :all
elsif admin.access?(current_shop, controller_gsub)
can :read, :all
end
end
end
问题是我似乎无法从能力类调用 current_shop 方法,因为我收到此错误:
undefined local variable or method `current_shop' for #<Ability:0x104df38b0>
有人知道该怎么做吗?提前谢谢!