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 и номера телефонов следующим образом:

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

person nicholaides    schedule 22.07.2010    source источник


Ответы (1)


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

person = Person.create
person.phone_numbers.create(:number => "123-456-7890")
person.attributes
# => {"_id"=>"4c48ff26f7e2da3704000001",
#    "phone_numbers"=>
#     [{"number"=>"123-456-7890", "_id"=>"4c48ff26f7e2da3704000002"}]}
person bernerdschaefer    schedule 23.07.2010
comment
Правильно. Я использую более старую версию Mongoid, в которой нет этой функции. Спасибо. - person nicholaides; 29.07.2010