module DefaultValueFor::InstanceMethods
Public Class Methods
new(attributes = nil, options = {})
click to toggle source
Calls superclass method
# File lib/default_value_for.rb, line 126 def initialize(attributes = nil, options = {}) @initialization_attributes = attributes.is_a?(Hash) ? attributes.stringify_keys : {} unless options[:without_protection] if respond_to?(:mass_assignment_options, true) && options.has_key?(:as) @initialization_attributes = sanitize_for_mass_assignment(@initialization_attributes, options[:as]) elsif respond_to?(:sanitize_for_mass_assignment, true) @initialization_attributes = sanitize_for_mass_assignment(@initialization_attributes) else @initialization_attributes = remove_attributes_protected_from_mass_assignment(@initialization_attributes) end end if self.class.respond_to? :protected_attributes super(attributes, options) else super(attributes) end end
Public Instance Methods
attributes_for_create(attribute_names)
click to toggle source
Calls superclass method
# File lib/default_value_for.rb, line 146 def attributes_for_create(attribute_names) attribute_names += self.class._all_default_attribute_values.keys.map(&:to_s).find_all { |name| self.class.columns_hash.key?(name) } super end
set_default_values()
click to toggle source
# File lib/default_value_for.rb, line 153 def set_default_values self.class._all_default_attribute_values.each do |attribute, container| next unless new_record? || self.class._all_default_attribute_values_not_allowing_nil.include?(attribute) connection_default_value_defined = new_record? && respond_to?("#{attribute}_changed?") && !__send__("#{attribute}_changed?") column = self.class.columns.detect {|c| c.name == attribute} attribute_blank = if column && column.type == :boolean attributes[attribute].nil? else attributes[attribute].blank? end next unless connection_default_value_defined || attribute_blank # allow explicitly setting nil through allow nil option next if @initialization_attributes.is_a?(Hash) && ( @initialization_attributes.has_key?(attribute) || ( @initialization_attributes.has_key?("#{attribute}_attributes") && nested_attributes_options.stringify_keys[attribute] ) ) && !self.class._all_default_attribute_values_not_allowing_nil.include?(attribute) __send__("#{attribute}=", container.evaluate(self)) if self.class.private_instance_methods.include? :clear_attribute_changes clear_attribute_changes attribute else changed_attributes.delete(attribute) end end end