7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/active_record/safe_initialize.rb', line 7
def safe_initialize(*attributes, &block)
options = attributes.
default = options.fetch(:with, block)
raise ArgumentError, "Missing initialization value" unless default
warn "Both :with and block are present; using :with value" if options[:with] && block_given?
after_initialize(options) do
attributes.each do |attribute|
if has_attribute?(attribute) && read_attribute(attribute).nil?
value = default
value = instance_exec(&value) if value.respond_to?(:call)
value = self.send(value) if value.is_a?(Symbol)
self.send "#{attribute}=", value
end
end
end
end
|