3

内部で別のクラスを宣言する専門家ポリシー クラスがあります。

class PaymentPolicy < ApplicationPolicy
  class Scope < Scope
    def resolve
      return scope.all if user.root?
      scope.where(user: user)
    end
  end
end

Scope今度は、この同じ内部クラスを別の場所で使用したいと考えています。1 つの方法は、スーパークラスで定義してオーバーライドすることですが、そのためには、別のクラスを作成してclass NewClass < ApplicationPolicy継承する必要がありPaymentPolicyます。しかし、クラス定義を懸念モジュール内に配置する方法が好きActiveSupport::Concernで、わかりません。これ

module UserAllowed
  extend ActiveSupport::Concern
  included do
    class Scope < Scope
      def resolve
        return scope.all if user.root?
        scope.where(user: user)
      end
    end
  end
end

動作しません。これも:

   module UserAllowed
      extend ActiveSupport::Concern
      class Scope < Scope
        def resolve
          return scope.all if user.root?
          scope.where(user: user
        end
      end
    end

ネストされたクラス定義を懸念モジュール内に配置するにはどうすればよいですか?

4

0 に答える 0