我如何创建一个Mongoid模型,该模型能够保存在自己的集合中,并嵌入到另一个文档中?
答案 0 :(得分:6)
简短的回答:你不能。
当您在两个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")
。