Method: Dynamoid::Associations::ClassMethods#has_one

Defined in:
lib/dynamoid/associations.rb

#has_one(name, options = {}) ⇒ Object

Declare a has_one association for this document.

class Image
  include Dynamoid::Document

  has_one :post
end

Association supports following operations:

  • create

  • create!

  • delete

When a name of an associated class doesn’t match an association name a class name should be specified explicitly either with class or class_name option:

has_one :item, class: Post
has_one :item, class_name: 'Post'

When associated class has own belong_to association to the current class and the name doesn’t match a name of the current class this name can be specified with inverse_of option:

class Post
  include Dynamoid::Document

  belongs_to :logo, class_name: 'Image'
end

class Image
  include Dynamoid::Document

  has_one :post, inverse_of: :logo
end

Parameters:

  • name (Symbol)

    the name of the association

  • options (Hash) (defaults to: {})

    options to pass to the association constructor

Options Hash (options):

  • :class (Class)

    the target class of the has_one association; that is, the belongs_to class

  • :class_name (String)

    the name of the target class of the association; that is, the name of the belongs_to class

  • :inverse_of (Symbol)

    the name of the association on the target class; that is, if the class has a belongs_to association, the name of that association

Since:

  • 0.2.0



128
129
130
# File 'lib/dynamoid/associations.rb', line 128

def has_one(name, options = {})
  association(:has_one, name, options)
end