2010-07-22 2 views
0

Есть ли простой способ получить все атрибуты документа Mongoid, в том числе встроенных документов?Mongoid - получение всех атрибутов, включая встроенные документы

Например, если у меня есть следующие документы:

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 

Я хотел бы получить Person «s атрибуты и телефонные номера, как это:

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

ответ

5

Поскольку встроенные документы действительно просто другие атрибуты на родительском документе, вы можете получить их так:

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

Право. Я нахожусь в более старой версии Mongoid, у которой нет этой функции. Благодарю. – nicholaides

Смежные вопросы