Module: SimplesIdeias::ValidatesEmailWhitelistOf

Included in:
ActiveRecord::Base
Defined in:
lib/validates_email_whitelist_of.rb,
lib/rails2/validates_email_whitelist_of.rb

Constant Summary collapse

EMAIL_FORMAT =
/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i

Instance Method Summary collapse

Instance Method Details

#validates_email_whitelist_of(*attr_names) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/rails2/validates_email_whitelist_of.rb', line 3

def validates_email_whitelist_of(*attr_names)
  options = {
    :on          => :save,
    :allow_nil   => false,
    :allow_blank => false,
    :whitelist   => []
  }

  options.update(attr_names.pop) if attr_names.last.kind_of?(Hash)

  validates_each(attr_names, options) do |record, attr_name, value|
    if value.to_s =~ EMAIL_FORMAT
      message = ::I18n.t(:invalid_whitelist, :scope => 'activerecord.errors.messages')
      record.errors.add(attr_name, message) unless options[:whitelist].include?($2)
    else
      message = ::I18n.translate(options[:message], :default => [:"activerecord.errors.messages.invalid_email", "is not a valid address"])
      record.errors.add(attr_name, message)
    end
  end
end