誰かが私が以下のシナリオをモデル化するのを手伝ってくれるかどうか疑問に思いました。MongoidにUserクラス、Eventクラス、Venueクラスがあります。ユーザーがイベントまたは会場、あるいはその両方の管理者になりたいです。これらのさまざまな役割は、制御不能になってしまう可能性があり、これがポリモーフィズムの良いケースになるかどうか疑問に思いました。
会場
has_and_belongs_to_many :admins, :class_name=> 'User', :inverse_of=>:venue_adminships
has_and_belongs_to_many :managers, :class_name=> 'User', :inverse_of=>:venue_managementships
イベント
has_and_belongs_to_many :admins, :class_name=> 'User', :inverse_of=>:event_adminships
has_and_belongs_to_many :managers, :class_name=> 'User', :inverse_of=>:event_managementships
ユーザー
has_and_belongs_to_many :venue_adminships, :class_name=>"Venue", inverse_of: :admins
has_and_belongs_to_many :venue_managementships, :class_name=>"Venue", inverse_of: :managers
has_and_belongs_to_many :event_adminships, :class_name=>"Event", inverse_of: :admins
has_and_belongs_to_many :event_managementships, :class_name=>"Event", inverse_of: :managers
ユーザーの「管理者」をプルアップできる必要があります(私がいる間、誰もが「管理者」よりも良い名前を持っています。。。。。?)。また、イベントのすべての管理者をプルアップできる必要があります。これほど多くの繰り返しの関係なしにこれを表現するためのよりクリーンな方法は何でしょうか?