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.
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.