构建Mongoid中的复杂关系

时间:2011-04-14 06:09:09

标签: ruby-on-rails mongodb mongoid

假设我在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

1 个答案:

答案 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