Class: ActiveRecord::Associations::BelongsToAssociation
  
  
  
Overview
  
    
Active Record Belongs To Association
  
 
  
  Instance Attribute Summary
  
  Attributes inherited from Association
  #owner, #reflection, #target
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  
  #build, #force_reload_reader, #reader, #writer
  
  
  
  
  
  
  
  
  Methods inherited from Association
  #create, #create!, #extensions, #initialize, #initialize_attributes, #inversed_from_queries, #klass, #load_target, #loaded!, #loaded?, #marshal_dump, #marshal_load, #reload, #remove_inverse_instance, #reset_negative_cache, #reset_scope, #scope, #set_inverse_instance, #set_inverse_instance_from_queries, #stale_target?
  
    Instance Method Details
    
      
  
  
    #decrement_counters  ⇒ Object 
  
  
  
  
    
      
48
49
50 
     | 
    
      # File 'lib/active_record/associations/belongs_to_association.rb', line 48
def decrement_counters
  update_counters(-1)
end 
     | 
  
 
    
      
  
  
    #decrement_counters_before_last_save  ⇒ Object 
  
  
  
  
    
      
56
57
58
59
60
61
62
63
64
65
66
67
68 
     | 
    
      # File 'lib/active_record/associations/belongs_to_association.rb', line 56
def decrement_counters_before_last_save
  if reflection.polymorphic?
    model_was = owner.attribute_before_last_save(reflection.foreign_type)&.constantize
  else
    model_was = klass
  end
  foreign_key_was = owner.attribute_before_last_save(reflection.foreign_key)
  if foreign_key_was && model_was < ActiveRecord::Base
    update_counters_via_scope(model_was, foreign_key_was, -1)
  end
end
     | 
  
 
    
      
  
  
    #default(&block)  ⇒ Object 
  
  
  
  
    
      
35
36
37 
     | 
    
      # File 'lib/active_record/associations/belongs_to_association.rb', line 35
def default(&block)
  writer(owner.instance_exec(&block)) if reader.nil?
end 
     | 
  
 
    
      
  
  
    #handle_dependency  ⇒ Object 
  
  
  
  
  
    
      
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 
     | 
    
      # File 'lib/active_record/associations/belongs_to_association.rb', line 7
def handle_dependency
  return unless load_target
  case options[:dependent]
  when :destroy
    raise ActiveRecord::Rollback unless target.destroy
  when :destroy_async
    id = owner.public_send(reflection.foreign_key.to_sym)
    primary_key_column = reflection.active_record_primary_key.to_sym
    enqueue_destroy_association(
      owner_model_name: owner.class.to_s,
      owner_id: owner.id,
      association_class: reflection.klass.to_s,
      association_ids: [id],
      association_primary_key_column: primary_key_column,
      ensuring_owner_was_method: options.fetch(:ensuring_owner_was, nil)
    )
  else
    target.public_send(options[:dependent])
  end
end
     | 
  
 
    
      
  
  
    #increment_counters  ⇒ Object 
  
  
  
  
    
      
52
53
54 
     | 
    
      # File 'lib/active_record/associations/belongs_to_association.rb', line 52
def increment_counters
  update_counters(1)
end 
     | 
  
 
    
      
  
  
    #inversed_from(record)  ⇒ Object 
  
  
  
  
    
      
30
31
32
33 
     | 
    
      # File 'lib/active_record/associations/belongs_to_association.rb', line 30
def inversed_from(record)
  replace_keys(record)
  super
end 
     | 
  
 
    
      
  
  
    #reset  ⇒ Object 
  
  
  
  
    
      
39
40
41
42 
     | 
    
      # File 'lib/active_record/associations/belongs_to_association.rb', line 39
def reset
  super
  @updated = false
end 
     | 
  
 
    
      
  
  
    #target_changed?  ⇒ Boolean 
  
  
  
  
    
      
70
71
72 
     | 
    
      # File 'lib/active_record/associations/belongs_to_association.rb', line 70
def target_changed?
  owner.saved_change_to_attribute?(reflection.foreign_key)
end 
     | 
  
 
    
      
  
  
    #updated?  ⇒ Boolean 
  
  
  
  
    
      
44
45
46 
     | 
    
      # File 'lib/active_record/associations/belongs_to_association.rb', line 44
def updated?
  @updated
end 
     |