Module: DefaultValueFor::InstanceMethods
- Defined in:
- lib/default_value_for.rb
Instance Method Summary collapse
- #attributes_for_create(attribute_names) ⇒ Object
- #initialize(attributes = nil, options = {}) ⇒ Object
- #set_default_values ⇒ Object
Instance Method Details
#attributes_for_create(attribute_names) ⇒ Object
146 147 148 149 |
# File 'lib/default_value_for.rb', line 146 def attributes_for_create(attribute_names) attribute_names += _default_attribute_values.keys.map(&:to_s) super end |
#initialize(attributes = nil, options = {}) ⇒ Object
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/default_value_for.rb', line 126 def initialize(attributes = nil, = {}) @initialization_attributes = attributes.is_a?(Hash) ? attributes.stringify_keys : {} unless [:without_protection] if respond_to?(:mass_assignment_options, true) && .has_key?(:as) @initialization_attributes = sanitize_for_mass_assignment(@initialization_attributes, [: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, ) else super(attributes) end end |
#set_default_values ⇒ Object
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/default_value_for.rb', line 151 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) && !self.class._all_default_attribute_values_not_allowing_nil.include?(attribute) __send__("#{attribute}=", container.evaluate(self)) changed_attributes.delete(attribute) end end |