module Devision::Models::Authenticatable::ClassMethods

Public Instance Methods

find_first_by_auth_conditions(tainted_conditions, options = {}) click to toggle source
# File lib/devision/models/authenticatable.rb, line 14
def find_first_by_auth_conditions(tainted_conditions, options = {})
  to_adapter.find_first(tainted_conditions.merge(options))
end
find_or_initialize_with_error_by(attribute, value, error=:invalid) click to toggle source
# File lib/devision/models/authenticatable.rb, line 18
def find_or_initialize_with_error_by(attribute, value, error=:invalid)
  find_or_initialize_with_errors([attribute], { attribute => value }, error)
end
find_or_initialize_with_errors(required_attributes, attributes, error=:invalid) click to toggle source
# File lib/devision/models/authenticatable.rb, line 22
def find_or_initialize_with_errors(required_attributes, attributes, error=:invalid)
  attributes = attributes.slice(*required_attributes)
  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.public_send("#{key}=", value)
      record.errors.add(key, value.present? ? error : :blank)
    end
  end

  record
end