2016-05-06 55 views
0

我有一个基于RC#386的自动授权系统。我注意到GuestPermission班和MemberPermision班之间有很多重复。不按预期继承的类继承

class GuestPremission < BasePermission 
    allow_action :static, [:about, :careers, :contact, :help, :home] 
end 

class MemberPermission < BasePermission 
    allow_action :static, [:about, :careers, :contact, :help, :home] 
end 

无论从BasePermission继承。我想重构MemberPermission类从GuestPermission继承,而不是像这样:

class GuestPermission < BasePermission 
    allow_action :static, [:about, :careers, :contact, :help, :home] 
end 

class MemberPermission < GuestPermission 
    ... 
end 

理想情况下,应减少已被授予和存在于GuestPermissionMemberPermission重复。但是,我得到一个递归错误:filter chain haled as :authorize rendered or redirected

这通常会告诉我所请求的控制器#操作(在本例中为static#home)未被隐式授权。但在这种情况下,它应该从GuestPermission继承。

有关解决此问题的任何建议,以便重复权限不是必需的?

回答

0

,你可以像这样做,使用轨道的担忧:

module Xxx 
    extend ActiveSupport::Concern 
    included do 
     class_eval do 
     allow_action :static, [:about, :careers, :contact, :help, :home]  
     end 
    end 
end 

class GuestPremission < BasePermission 
    include Xxx 
end 

class MemberPermission < BasePermission 
    include Xxx 
end 
+0

难道不应该都涓滴如果'MemberPermission Matteo