Method: Devise::Models::Authenticatable::ClassMethods#find_or_initialize_with_errors
- Defined in:
- lib/devise/models/authenticatable.rb
#find_or_initialize_with_errors(required_attributes, attributes, error = :invalid) ⇒ Object
Find or initialize a record with group of attributes based on a list of required attributes.
276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 |
# File 'lib/devise/models/authenticatable.rb', line 276 def find_or_initialize_with_errors(required_attributes, attributes, error=:invalid) #:nodoc: attributes = if attributes.respond_to? :permit! attributes.slice(*required_attributes).permit!.to_h.with_indifferent_access else attributes.with_indifferent_access.slice(*required_attributes) end attributes.delete_if { |key, value| value.blank? } if attributes.size == required_attributes.size record = find_first_by_auth_conditions(attributes) end unless record record = new required_attributes.each do |key| value = attributes[key] record.send("#{key}=", value) record.errors.add(key, value.present? ? error : :blank) end end record end |