method
writer_method
writer_method(name, class_name, mapping, allow_nil, converter)
private
Hide 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