Class: DatastaxRails::Associations::HasOneAssociation

Inherits:
SingularAssociation show all
Defined in:
lib/datastax_rails/associations/has_one_association.rb

Overview

A has_one association is the parent of a one-to-one parent/child relation

Instance Attribute Summary

Attributes inherited from Association

#loaded, #owner, #reflection, #target

Instance Method Summary collapse

Methods inherited from SingularAssociation

#build, #create, #create!, #reader, #writer

Methods inherited from Association

#aliased_column_family, #association_scope, #initialize, #klass, #load_target, #loaded!, #reload, #reset, #reset_scope, #scoped, #set_inverse_instance, #stale_target?, #target_scope

Constructor Details

This class inherits a constructor from DatastaxRails::Associations::Association

Instance Method Details

#delete(method = options[:dependent]) ⇒ Object


27
28
29
30
31
32
33
34
35
36
37
# File 'lib/datastax_rails/associations/has_one_association.rb', line 27

def delete(method = options[:dependent])
  return unless load_target
  case method
  when :delete
    target.delete
  when :destroy
    target.destroy
  when :nullify
    target.update_attribute(reflection.foreign_key, nil)
  end
end

#replace(record, save = true) ⇒ Object


5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/datastax_rails/associations/has_one_association.rb', line 5

def replace(record, save = true)
  raise_on_type_mismatch(record) if record
  load_target

  if target && target != record
    remove_target!(options[:dependent]) unless target.destroyed?
  end

  if record
    set_owner_attributes(record)
    set_inverse_instance(record)

    if owner.persisted? && save && !record.save
      nullify_owner_attributes(record)
      set_owner_attributes(target) if target
      fail RecordNotSaved, "Failed to save the new associated #{reflection.name}."
    end
  end

  self.target = record
end