我正在为Spree创建扩展程序。它允许多个商店,所以我在管理区域添加了一个面板。
我还创建了一个新角色:store 我创建了一个AbilityDecorator,如下所示
module Spree
class AbilityDecorator
include CanCan::Ability
def initialize(user)
if user.respond_to?(:has_spree_role?) && user.has_spree_role?('store')
can :admin, Store
end
end
end
Ability.register_ability(AbilityDecorator)
end
问题是我可以访问使用商店用户登录的管理区域。它仅显示“商店”选项卡。但是我被重定向到/ admin / authorization_failed并且错误消失了。
有什么想法吗?
更新
我需要将以下行添加到我的装饰器中:
can [:admin, :index, :show], Order
因为/ admin被路由到orders_controller #index