method
writer_method
v4.2.1 -
Show latest stable
- Class:
ActiveRecord::Aggregations::ClassMethods
writer_method(name, class_name, mapping, allow_nil, converter)private
No documentation available.
# File activerecord/lib/active_record/aggregations.rb, line 244
def writer_method(name, class_name, mapping, allow_nil, converter)
define_method("#{name}=") do |part|
klass = class_name.constantize
if part.is_a?(Hash)
part = klass.new(*part.values)
end
unless part.is_a?(klass) || converter.nil? || part.nil?
part = converter.respond_to?(:call) ? converter.call(part) : klass.send(converter, part)
end
if part.nil? && allow_nil
mapping.each { |key, _| self[key] = nil }
@aggregation_cache[name] = nil
else
mapping.each { |key, value| self[key] = part.send(value) }
@aggregation_cache[name] = part.freeze
end
end
end