私の Rails アプリケーションには、Event モデルと User モデルがあります。ビジネス ルールでは、イベントには 1 人の所有者と多数のメンバーがあり、所有者はメンバーでなければならないことが規定されています。逆は、多数の「所有イベント」および「イベント」(所有者ではなくメンバーであるイベント) を持つユーザーです。私は当初、この関連付けを次のようにモデル化することを計画していました。
class Event < ActiveRecord::Base
has_many :event_members, dependent: :destroy
has_one :owner, through: :event_members, source: :user, conditions: { owner: true }
has_many :members, through: :event_members, source: :user
end
class EventMember < ActiveRecord::Base
belongs_to :event
belongs_to :user
end
class User < ActiveRecord::Base
has_many :owned_events, through: :event_members, conditions: { owner: true }
has_many :events, through: :event_members
end
これにより所有者が 1 人確保され、その所有者は無料でメンバーズ アソシエーションに含まれるだろうと考えました。ただし、コレクション (:event_members 関連付け) を介して has_one を指定できないため、これは機能しません。
これをモデル化するより良い方法はありますか?所有者フラグによって EventMember をクエリする Event に一時的な「所有者」属性を追加できますが、それは所有者を設定するために機能しますか (つまり、作成された EventMember レコードを取得して、所有者フラグが設定されていることを確認できますか)?