Rails与mongoid的多态关联

时间:2013-11-08 23:03:00

标签: ruby-on-rails mongoid polymorphic-associations

将Rails 3.2与Mongoid 3.1.5一起使用。我最近刚刚将事件belongs_to:场地改为多态关联:位置。执行此操作后,从组织中保存作用域的事件时,它不再将事件与场地相关联。

#Models
class Event
  include Mongoid::Document
  has_and_belongs_to_many :organizations, index: true
  belongs_to :location, polymorphic: true, index: true
end

class Organization
  include Mongoid::Document
  has_and_belongs_to_many :events, index: true
end

class Venue
  include Mongoid::Document
  has_many :events, as: :location, autosave: true
end

#Code

org = Organization.first
ven = Venue.first
evt = org.events.create(location: ven)
org.events.count #=> 1
evt.location #=> #<Venue...

# How can I make this include the evt?
ven.events.count #=> 0

由此,我可以做ven.events << evt,但这需要我每次都这样做。还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

Mongodb上没有“加入”,所以不可能急于加载你的关系。 您可以对数据进行非规范化,并在活动中嵌入来自Venue的复制文档。