class ActiveModel::EmailConfirmation

Constants

VERSION

Attributes

email[R]
user[W]

Public Class Methods

find(token) click to toggle source
# File lib/active_model/email_confirmation.rb, line 30
def self.find(token)
  email = verify_token(token)
  new(email: email).tap { |email_confirmation| raise EmailInvalid if email_confirmation.invalid? }
end

Private Class Methods

generate_token(*args) click to toggle source
# File lib/active_model/email_confirmation.rb, line 41
def self.generate_token(*args)
  Base64.urlsafe_encode64(message_verifier.generate(*args))
end
message_verifier() click to toggle source
# File lib/active_model/email_confirmation.rb, line 37
def self.message_verifier
  Rails.application.message_verifier("email confirmation salt")
end
verify_token(string) click to toggle source
# File lib/active_model/email_confirmation.rb, line 45
def self.verify_token(string)
  raise TokenInvalid if string.nil?

  message_verifier.verify(Base64.urlsafe_decode64(string))
rescue ActiveSupport::MessageVerifier::InvalidSignature, ArgumentError
  raise TokenInvalid
end

Public Instance Methods

email=(email) click to toggle source
# File lib/active_model/email_confirmation.rb, line 16
def email=(email)
  remove_instance_variable(:@user) if defined?(@user)
  @email = email
end
token() click to toggle source
# File lib/active_model/email_confirmation.rb, line 26
def token
  self.class.generate_token(user.email)
end
user() click to toggle source
# File lib/active_model/email_confirmation.rb, line 21
def user
  return @user if defined?(@user)
  @user = User.find_by(email: email)
end

Private Instance Methods

existence() click to toggle source
# File lib/active_model/email_confirmation.rb, line 53
def existence
  errors.add(:email, :invalid) if user.blank?
end