我有一个基于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
理想情况下,这应该减少MemberPermission
中已经授予并存在于GuestPermission
中的重复项。但是,我收到一个递归错误:filter chain haled as :authorize rendered or redirected
。
这通常告诉我所请求的控制器#action(在这种情况下为static#home
)没有被隐式授权。但在这种情况下,它应该继承自GuestPermission
。
有关修复此问题的任何想法,以便重复权限是不必要的吗?
答案 0 :(得分:0)
你可以这样做,使用rails关注:
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