Class: DataMapper::Associations::BelongsToAssociation::Instance
- Inherits:
-
Reference
show all
- Defined in:
- lib/data_mapper/associations/belongs_to_association.rb
Instance Method Summary
collapse
Methods inherited from Reference
#association, #initialize
Instance Method Details
#build(options) ⇒ Object
101
102
103
|
# File 'lib/data_mapper/associations/belongs_to_association.rb', line 101
def build(options)
@associated = association.associated_constant.new(options)
end
|
#create(options) ⇒ Object
97
98
99
|
# File 'lib/data_mapper/associations/belongs_to_association.rb', line 97
def create(options)
@associated = association.associated_constant.create(options)
end
|
#dirty? ⇒ Boolean
50
51
52
|
# File 'lib/data_mapper/associations/belongs_to_association.rb', line 50
def dirty?
@associated && @new_member
end
|
#ensure_foreign_key! ⇒ Object
116
117
118
119
120
|
# File 'lib/data_mapper/associations/belongs_to_association.rb', line 116
def ensure_foreign_key!
if @associated
@instance.instance_variable_set(association.foreign_key.instance_variable_name, @associated.key)
end
end
|
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
# File 'lib/data_mapper/associations/belongs_to_association.rb', line 75
def instance
@associated || @associated = begin
if @instance.loaded_set.nil?
nil
else
fk = association.foreign_key_column.to_sym
set = @instance.loaded_set.group_by { |instance| instance.send(fk) }
@instance.database_context.all(association.constant, association.associated_table.key.to_sym => set.keys).each do |assoc|
set[assoc.key].each do |primary_instance|
primary_instance.send(setter_method, assoc)
end
end
@associated
end
end
end
|
69
70
71
72
73
|
# File 'lib/data_mapper/associations/belongs_to_association.rb', line 69
def reload!
@new_member = false
@associated = nil
instance
end
|
#save_without_validation(database_context) ⇒ Object
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/data_mapper/associations/belongs_to_association.rb', line 58
def save_without_validation(database_context)
@new_member = false
unless @associated.nil?
@instance.instance_variable_set(
association.foreign_key_column.instance_variable_name,
@associated.key
)
@instance.database_context.adapter.save_without_validation(database_context, @instance)
end
end
|
109
110
111
112
113
114
|
# File 'lib/data_mapper/associations/belongs_to_association.rb', line 109
def set(val)
raise "RecursionError" if val == @instance
@new_member = true
@instance.instance_variable_set(association.foreign_key_column.instance_variable_name, val.key)
@associated = val
end
|
#setter_method ⇒ Object
105
106
107
|
# File 'lib/data_mapper/associations/belongs_to_association.rb', line 105
def setter_method
"#{@association_name}=".to_sym
end
|
#validate_recursively(event, cleared) ⇒ Object
54
55
56
|
# File 'lib/data_mapper/associations/belongs_to_association.rb', line 54
def validate_recursively(event, cleared)
@associated.nil? || cleared.include?(@associated) || @associated.validate_recursively(event, cleared)
end
|