has_one – the one-to-one relation
As the method name suggests,
has_one
sets up the parent relation for a model having only one child:
class Book include Mongoid::Document has_one :book_detail end
This implies that "A Book
class has one BookDetail
". For every parent relation, it is advisable to set the child relationship too.
class BookDetail include Mongoid::Document belongs_to :book end
The has_one
method takes the options discussed in the following sections.
:as
When a relation is a polymorphic relation, we need to use this option:
class Ship include Mongoid::Document has_one :vehicle, as: resource end
This tells the has_one
method that the vehicle is a polymorphic relation that can be accessed via the
resource_type
and
resource_id
fields in the vehicles collection. It's important that the inverse relation sets polymorphic: true
, and we will see polymorphic relations soon.
:autosave
The :autosave
option is false
by default. When the object is created, the related child objects...