Class: EmailAddress::ActiveRecordValidator

Inherits:
ActiveModel::Validator
  • Object
show all
Defined in:
lib/email_address/active_record_validator.rb

Overview

ActiveRecord validator class for validating an email address with this library. Note the initialization happens once per process.

Usage:

validates_with EmailAddress::ActiveRecordValidator, field: :name

Options:

  • field: email,

  • fields: [:email1, :email2]

Default field: :email or :email_address (first found)

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ ActiveRecordValidator

Returns a new instance of ActiveRecordValidator.



18
19
20
# File 'lib/email_address/active_record_validator.rb', line 18

def initialize(options={})
  @opt = options
end

Instance Method Details

#validate(r) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/email_address/active_record_validator.rb', line 22

def validate(r)
  if @opt[:fields]
    @opt[:fields].each {|f| validate_email(r, f) }
  elsif @opt[:field]
    validate_email(r, @opt[:field])
  elsif r.respond_to? :email
    validate_email(r, :email)
  elsif r.respond_to? :email_address
    validate_email(r, :email_address)
  end
end

#validate_email(r, f) ⇒ Object



34
35
36
37
38
39
40
41
42
# File 'lib/email_address/active_record_validator.rb', line 34

def validate_email(r,f)
  return if r[f].nil?
  e = EmailAddress.new(r[f])
  unless e.valid?
    r.errors[f] << (@opt[:message] ||
                   EmailAddress::Config.error_messages[:invalid_address] ||
                   "Invalid Email Address")
  end
end