类继承不按预期继承

时间:2016-05-06 05:28:44

标签: ruby-on-rails-3 inheritance refactoring

我有一个基于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

有关修复此问题的任何想法,以便重复权限是不必要的吗?

1 个答案:

答案 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
相关问题