instance method
writer_method
Ruby on Rails 3.0.20
Since v2.2.3 PrivateSignature
writer_method(name, class_name, mapping, allow_nil, converter)
No documentation comment.
Parameters
-
namereq -
class_namereq -
mappingreq -
allow_nilreq -
converterreq
Source
# File activerecord/lib/active_record/aggregations.rb, line 251
def writer_method(name, class_name, mapping, allow_nil, converter)
module_eval do
define_method("#{name}=") do |part|
if part.nil? && allow_nil
mapping.each { |pair| self[pair.first] = nil }
instance_variable_set("@#{name}", nil)
else
unless part.is_a?(class_name.constantize) || converter.nil?
part = case converter
when Symbol
class_name.constantize.send(converter, part)
when Proc, Method
converter.call(part)
else
raise ArgumentError, 'Converter must be a symbol denoting the converter method to call or a Proc to be invoked.'
end
end
mapping.each { |pair| self[pair.first] = part.send(pair.last) }
instance_variable_set("@#{name}", part.freeze)
end
end
end
end
Defined in activerecord/lib/active_record/aggregations.rb line 251
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::Aggregations::ClassMethods