假设我在HABTM环境中有两个单独的模型用户和事件。
现在我想扩展它以包含有关关系的信息。例如,如果用户计划参加活动。
在标准的ActiveRecord中,这将通过has_many:through关系来完成,但是从我读过的内容中尝试在mongoid中创建这种关系是一个坏主意。解决这个问题的好方法是什么? (和mongo呆在一起)
以下是我对此类功能的期望示例:
class User
field :name
has_many :user_events
has_many :events, :through => :user_events
end
class Event
field :title
has_many :user_events
has_many :users, :through => :user_events
end
class UserEvent
field :attending?, :type => Boolean
belongs_to :users
belongs_to :events
end
答案 0 :(得分:3)
class User
include Mongoid::Document
field :name
embeds_many :user_events
end
class UserEvent
include Mongoid::Document
belongs_to :event
embedded_in :user
field :attending?, :type => Boolean
end
class Event
include Mongoid::Document
field :title
end
为了查找用户参加的所有活动:
user = User.where(:name => 'Joe').first
user.user_events.where(:attending? => true)
有关完整示例,请参阅此gist