Ruby on rails 如何通过协会为拥有者和成员建立模型?
在我的rails应用程序中,我有事件和用户模型。业务规则规定事件有一个所有者和多个成员,并且所有者必须是成员。相反,用户拥有许多“自有事件”和“事件”事件,他/她是其中的一员,但不是所有者。我原本计划这样模拟这个协会: 类事件Ruby on rails 如何通过协会为拥有者和成员建立模型?,ruby-on-rails,ruby,associations,has-many-through,Ruby On Rails,Ruby,Associations,Has Many Through,在我的rails应用程序中,我有事件和用户模型。业务规则规定事件有一个所有者和多个成员,并且所有者必须是成员。相反,用户拥有许多“自有事件”和“事件”事件,他/她是其中的一员,但不是所有者。我原本计划这样模拟这个协会: 类事件
class Event < ActiveRecord::Base
has_many :event_members
has_many :members, :through => :event_members, :source => :user
def owner
event_members.ownerships.map(&:user).first
end
end
class EventMember < ActiveRecord::Base
belongs_to :event
belogns_to :user
scope :ownerships, -> { where(:owner => true) }
end
class User < ActiveRecord::Base
has_many :event_members
has_many :events, :through => :event_members
def owned_events
event_members.ownerships.map(&:event)
end
end
也许把逻辑放在那里,只强制一个所有者和make_所有者的抽象部分!根据应用程序中的混乱程度将其添加到EventMember。如何在联接模型EventMember上添加所有者属性,以及在event_members表中添加一个布尔类型的字段,默认值为false。使用每个模型上的方法访问owner和owned_事件
class Event < ActiveRecord::Base
has_many :event_members
has_many :members, :through => :event_members, :source => :user
def owner
event_members.ownerships.map(&:user).first
end
end
class EventMember < ActiveRecord::Base
belongs_to :event
belogns_to :user
scope :ownerships, -> { where(:owner => true) }
end
class User < ActiveRecord::Base
has_many :event_members
has_many :events, :through => :event_members
def owned_events
event_members.ownerships.map(&:event)
end
end
也许把逻辑放在那里,只强制一个所有者和make_所有者的抽象部分!根据应用程序中的混乱程度,将其添加到EventMember。看起来我将从事件模型手动强制执行所有权。我已经研究了这两种解决方案:和-后者使我非常接近我想要的,但我在访问:through属性时看到了奇怪的行为。我想你们的答案需要一个后创建钩子,以防事件并没有保存在make_owner中!看起来我要从事件模型手动强制所有权。我已经研究了这两种解决方案:和-后者使我非常接近我想要的,但我在访问:through属性时看到了奇怪的行为。我想你们的答案需要一个后创建钩子,以防事件并没有保存在make_owner中!