在我的 Rails 应用程序中,我有 Event 和 User 模型。业务规则规定一个事件有一个所有者和许多成员,并且所有者必须是成员。反之亦然,用户拥有许多“拥有的事件”和“事件”(他/她是其成员但不是所有者的事件)。我最初计划像这样对这种关联进行建模:
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
我认为这将确保一个所有者和该所有者将免费包含在成员协会中。但是,这不起作用,因为我无法通过集合指定 has_one - :event_members 关联。
有没有更好的方法来建模这个?我可以在 Event 上添加一个临时的“所有者”属性,通过所有者标志查询 EventMember - 但这是否适用于设置所有者(即我可以获取创建的 EventMember 记录并确保设置了所有者标志)?