我将如何创建一个能够保存在自己的集合中并嵌入到另一个文档中的 Mongoid 模型?
问问题
1280 次
1 回答
6
简短的回答:你不能。
当您在两个 Mongoid 文档之间使用嵌入关系时,这是因为您不希望子模型在其自己的集合中。一个嵌入式文档,字面意思是:嵌入其父级。
我不确定您是否是 Mongoid 的新手,因此您实际上可能正在寻找的是引用关系,它的行为更像是传统的 RDBMS 关系,其中子文档存储对父文档 ID 的引用。Mongoid 文档从这里开始。
鉴于这些嵌入式模型,在两者之间切换非常容易:
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
and 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")
。
于 2012-06-14T00:11:51.973 回答