我有一个基于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理想情况下,这应该会减少已经授予并存在于GuestPermission中的MemberPermission中的重复项。但是,我得到一个递归错误:filter chain haled as :authorize rendered or redirected。
这通常告诉我所请求的controller#action (在本例中是static#home)没有被隐式授权。但在这种情况下,它应该继承自GuestPermission。
有什么想法可以解决这个问题,这样就不需要复制权限了吗?
发布于 2016-05-07 08:11:20
你可以这样做,使用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
endhttps://stackoverflow.com/questions/37064902
复制相似问题