embeds_one – embed one document
This relation takes the standard options, which we have seen earlier: :autobuild
, :as
, :cascade_callbacks
, :cyclic
, :store_as
, and so on. However, it's interesting how we can manage relations using the names of the relations.
What if we want to save the relation twice in the same parent class? For example, in the Author
model, we want the permanent and current addresses. Both are Address
objects. We use the name
option that specifies the name of the relation in which the information would be stored. Have a look at the following code:
class Author include Mongoid::Document embeds_one :permanent_address, class_name: "Address" embeds_one :current_address, class_name: "Address" end class Address include Mongoid::Document embedded_in :author, inverse_of: :permanent_address embedded_in :author, inverse_of: :current_address end
If we create an author now, MongoDB stores both the addresses under different names:
{ "_id" : ObjectId("51b42d4245db7c9535000001...