Mongoid - 获取包括嵌入文档在内的所有属性

nic*_*des 0 ruby mongodb 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
Run Code Online (Sandbox Code Playgroud)

我想获得这样Person的属性和电话号码:

{ :name => "Jenny", :phone_numbers => [{ :number => '867-5309' }, { :number => '867-5309' }] }
Run Code Online (Sandbox Code Playgroud)

小智 5

由于嵌入式文档实际上只是父文档中的其他属性,因此您可以像这样访问它们:

person = Person.create
person.phone_numbers.create(:number => "123-456-7890")
person.attributes
# => {"_id"=>"4c48ff26f7e2da3704000001",
#    "phone_numbers"=>
#     [{"number"=>"123-456-7890", "_id"=>"4c48ff26f7e2da3704000002"}]}
Run Code Online (Sandbox Code Playgroud)