module HasDefaults::ActiveRecordExt::InstanceMethods

Public Instance Methods

default_for(name) click to toggle source
# File lib/has_defaults/active_record_ext.rb, line 48
def default_for(name)
  raw_value = self.class.has_defaults_options[name.to_sym]
  evaluate_raw_default_value(raw_value)
end

Private Instance Methods

evaluate_raw_default_value(raw_value) click to toggle source
# File lib/has_defaults/active_record_ext.rb, line 66
def evaluate_raw_default_value(raw_value)
  value = raw_value
  if value.respond_to?(:call)
    value = instance_exec(&value)
  end
  value
end
set_default_attributes() click to toggle source
# File lib/has_defaults/active_record_ext.rb, line 55
def set_default_attributes
  if new_record?
    self.class.has_defaults_options.each do |name, raw_value|
      if send(name).nil?
        value = evaluate_raw_default_value(raw_value)
        send("#{name}=", value)
      end
    end
  end
end