2010-07-22 4 views
0

Existe-t-il un moyen facile d'obtenir tous les attributs d'un document Mongoid, y compris ceux des documents incorporés?Mongoid - Obtenir tous les attributs, y compris les documents intégrés

Par exemple, si j'ai les documents suivants:

class Person 
    include Mongoid::Document 
    embeds_many :phone_numbers 
    field :name 
end 

class PhoneNumner 
    include Mongoid::Document 
    embedded_in :person, :inverse_of => :phone_numbers 
    field :number 
end 

Je voudrais obtenir un des attributs et des numéros de téléphone de Person comme ceci:

{ :name => "Jenny", :phone_numbers => [{ :number => '867-5309' }, { :number => '867-5309' }] } 

Répondre

5

Puisque les documents intégrés sont vraiment juste d'autres attributs sur le document parent, vous pouvez obtenir à eux comme suit:

person = Person.create 
person.phone_numbers.create(:number => "123-456-7890") 
person.attributes 
# => {"_id"=>"4c48ff26f7e2da3704000001", 
# "phone_numbers"=> 
#  [{"number"=>"123-456-7890", "_id"=>"4c48ff26f7e2da3704000002"}]} 
+0

Droit. Je suis sur une ancienne version de Mongoid qui n'a pas cette fonctionnalité. Merci. – nicholaides

Questions connexes