懸念がどのように機能するかを理解しているかどうかはわかりません。いくつかの一般的なコードを を拡張する 2 つのモジュールにラップしようとしていますActiveSupport::Concern
が、両方を含めるとエラーが発生します。
「含まれる」: 懸念に対して複数の「含まれる」ブロックを定義することはできません (ActiveSupport::Concern::MultipleIncludedBlocks)
module AppCore
class Student
include Mongoid::Document
include Mongoid::Timestamps
include AppCore::Extensions::Models::TenantScoped
include AppCore::Extensions::Models::UserScoped
end
end
module AppCore::Extensions::Models
module TenantScoped
extend ActiveSupport::Concern
included do
field :tenant_id, type: Integer
belongs_to :tenant, class_name: 'AppCore::Tenant'
association_name = self.to_s.downcase.pluralize
AppCore::Tenant.has_many association_name.to_sym, class_name: self.to_s
end
end
end
module AppCore::Extensions::Models
module UserScoped
extend ActiveSupport::Concern
included do
field :user_id, type: Integer
belongs_to :user, class_name: 'AppCore::User'
end
end
end
一度に 1 つの懸念のみを含めることはできますか? 2 つの Scoped モジュールを tenant_scoped に移動し、user_scoped を ClassMethods に移動して、1 つのモデル拡張のみを考慮に入れる必要がありますか?