Module: Devise::Models::MultiEmailAuthenticatable::ClassMethods

Defined in:
lib/devise/multi_email/models/authenticatable.rb

Instance Method Summary collapse

Instance Method Details

#build_conditions(criteria) ⇒ Object



84
85
86
87
88
89
90
91
92
# File 'lib/devise/multi_email/models/authenticatable.rb', line 84

def build_conditions(criteria)
  criteria = devise_parameter_filter.filter(criteria)
  # match the primary email record if the `unconfirmed_email` column is specified
  if Devise::MultiEmail. || criteria[:unconfirmed_email]
    criteria.merge!(primary: true)
  end

  { multi_email_association.reflection.table_name.to_sym => criteria }
end

#find_by_email(email) ⇒ Object



80
81
82
# File 'lib/devise/multi_email/models/authenticatable.rb', line 80

def find_by_email(email)
  joins(multi_email_association.name).where(build_conditions email: email).first
end

#find_first_by_auth_conditions(tainted_conditions, opts = {}) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/devise/multi_email/models/authenticatable.rb', line 64

def find_first_by_auth_conditions(tainted_conditions, opts = {})
  filtered_conditions = devise_parameter_filter.filter(tainted_conditions.dup)
  criteria = filtered_conditions.extract!(:email, :unconfirmed_email)

  if criteria.keys.any?
    conditions = filtered_conditions.to_h.merge(opts).
      reverse_merge(build_conditions(criteria))

    resource = joins(multi_email_association.name).find_by(conditions)
    resource. = criteria.values.first if resource
    resource
  else
    super(tainted_conditions, opts)
  end
end