我如何创建一个能够保存在自己的集合中并嵌入到另一个文档中的 Mongoid 模型?
最佳答案
简短的回答:你不能。
当您在两个 Mongoid 文档之间使用嵌入关系时,这是因为您不希望子模型在其自己的集合中。嵌入式文档字面意思是:嵌入在其父级中。
我不确定您是否是 Mongoid 的新手,所以您实际上可能正在寻找的是引用关系,它的行为更像传统的 RDBMS 关系,其中子文档存储对父文档 ID 的引用. Mongoid 文档以 here 开头.
鉴于这些嵌入式模型,在两者之间切换非常容易:
class Person
include Mongoid::Document
field :name
embeds_many :phone_numbers
end
class PhoneNumber
include Mongoid::Document
field :area_code
field :number
embedded_in :person
end
你可以只改变embeds_many
和embedded_in
,这样就变成了:
class Person
include Mongoid::Document
field :name
has_many :phone_numbers
end
class PhoneNumber
include Mongoid::Document
field :area_code
field :number
belongs_to :person
end
它会正常工作。现在,您将能够使用以下语句直接查询电话号码:PhoneNumber.where(:area_code => "212")
。
关于ruby-on-rails-3 - 带有 Mongoid Embedded 和 Standalone 的 Rails 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11024826/