我正在为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并且错误消失了 .
有什么想法吗?
Update:
我需要将以下行添加到我的装饰器中:
can [:admin, :index, :show], Order
因为/ admin被路由到orders_controller #index