임베디드 모델을 쿼리 할 때 임베디드 모델의 인스턴스를 포함하는 많은 부모 레코드가 있음에도 불구하고 레코드가 반환되지 않습니다. 내가 잘 밴드 (Band.all
, Band.find
등)을 조회 할 수 있습니다Mongoid 임베디드 문서가 쿼리를 위해 빈 반환
class Band
include Mongoid::Document
embeds_one :label
end
class Label
include Mongoid::Document
field :name, type: String
embedded_in :band
end
,하지만 난 라벨을 쿼리 할 때 반환되는 값이 없습니다 :
는 두 가지 모델로하는 Band
에 포함 된 Label
있습니다. 예를 들어 :
내가 포함 된 레이블이 밴드를 만들고, 저장 : 다음
> 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.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.all.to_a
=> []
> Label.count
=> 0
> Label.last
=> nil
> Label.first
=> nil
> Label.find "516cff5a5543d8842e000009" # this is the label id from Band
=> nil
나는 이것이 정상적인 동작이 아니라는 점을 거의 확실하게 나타냅니다. 이 코드는 여기 몽고 이드 문서의 예제에서 직접 가져온 것입니다 : http://mongoid.org/en/mongoid/docs/relations.html#embeds_one
무엇이 누락 되었습니까?
명확한 설명 주셔서 감사합니다. 나는 특별한 유스 케이스를 가지고 있지 않았다. 나는 단지 그것을 알아 차렸고, 이상한 행동이라고 생각했다. 임베디드 몽고드 모델에 대한 질문을 할 때 몽고 인은 적어도 경고를 던져서는 안된다. –
@SherwinYu, 이해할 수 있더라도 직관력이 없다는 것이 맞습니다. 불행히도, 이것은 몽고 이드 (몽구스)의 많은 코너에서 그렇습니다. –