当我查询嵌入式模型时,尽管有大量包含嵌入式模型实例的父记录,但没有返回任何记录。
有两种模型,一个Label
嵌入在 a 中Band
:
class Band
include Mongoid::Document
embeds_one :label
end
class Label
include Mongoid::Document
field :name, type: String
embedded_in :band
end
我可以很好地查询 Band (Band.all
等),但是当我查询 Label 时,它什么也不返回。Band.find
例如:
我创建带有嵌入标签的乐队,并保存它:
> b = Band.create
=> #<Band _id: 516cff525543d8842e000008, _type: nil>
> b.build_label name: "new label"
=> #<Label _id: 516cff5a5543d8842e000009, _type: nil, name: "new label">
> b.save
=> true
然后我查询 Band 模型,一切都很好:
> Band.all.to_a
=> [#<Band _id: 516cff525543d8842e000008, _type: nil>]
> Band.count
=> 1
> Band.first.label
=> #<Label _id: 516cff5a5543d8842e000009, _type: nil, name: "new label">
> Band.find "516cff525543d8842e000008"
=> #<Band _id: 516cff525543d8842e000008, _type: nil>
但是当我查询 Label 模型时,什么也没有出现!
> Label.all.to_a
=> []
> Label.count
=> 0
> Label.last
=> nil
> Label.first
=> nil
> Label.find "516cff5a5543d8842e000009" # this is the label id from Band
=> nil
我几乎可以肯定这不是预期的行为。代码直接来自 Mongoid 文档的示例:http: //mongoid.org/en/mongoid/docs/relations.html#embeds_one
我错过了什么?