2016-05-06 1 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 

В идеале, это должно уменьшить дублирование в MemberPermission уже предоставляется и существует в GuestPermission. Однако я получаю рекурсивную ошибку: filter chain haled as :authorize rendered or redirected.

Обычно это говорит о том, что запрошенное действие # контроллера (в данном случае static#home) не было разрешено. Но в этом случае он должен наследовать от GuestPermission.

Любые идеи по исправлению этого, чтобы дублирование разрешений не было необходимо?

ответ

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 
+0

Если не все просачивания, если 'MemberPermission Matteo

 Смежные вопросы

  • Нет связанных вопросов^_^