Sha256: c0aa2d65cb37aa9e1277a1b803e78d6d81a74b5807f23828d7f4ffa0414a49a9

Contents?: true

Size: 979 Bytes

Versions: 23

Compression:

Stored size: 979 Bytes

Contents

# Borrowed from http://my.rails-royce.org/2010/07/21/email-validation-in-ruby-on-rails-without-regexp/
# Mentioned in tweet here: https://twitter.com/_sohara/status/177120126083141633
require 'mail'
class EmailValidator < ActiveModel::EachValidator
  def validate_each(record,attribute,value)
    begin
      m = Mail::Address.new(value)
      # We must check that value contains a domain and that value is an email address
      r = m.domain && m.address == value
      t = m.__send__(:tree)
      # We need to dig into treetop
      # A valid domain must have dot_atom_text elements size > 1
      # user@localhost is excluded
      # treetop must respond to domain
      # We exclude valid email values like <user@localhost.com>
      # Hence we use m.__send__(tree).domain
      r &&= (t.domain.dot_atom_text.elements.size > 1)
    rescue Exception => e
      r = false
    end
    record.errors.add(attribute, :invalid, {:value => value}.merge!(options)) unless r
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
spree_core-2.0.13 lib/spree/core/validators/email.rb
spree_core-2.0.12 lib/spree/core/validators/email.rb
spree_core-2.0.11 lib/spree/core/validators/email.rb
spree_core-2.0.10 lib/spree/core/validators/email.rb
spree_core-2.0.9 lib/spree/core/validators/email.rb
spree_core-1.3.5 lib/spree/core/validators/email.rb
spree_core-2.0.8 lib/spree/core/validators/email.rb
spree_core-2.1.3 lib/spree/core/validators/email.rb
spree_core-2.0.7 lib/spree/core/validators/email.rb
spree_core-2.1.2 lib/spree/core/validators/email.rb
spree_core-2.0.6 lib/spree/core/validators/email.rb
spree_core-1.3.4 lib/spree/core/validators/email.rb
spree_core-2.1.1 lib/spree/core/validators/email.rb
spree_core-2.0.5 lib/spree/core/validators/email.rb
spree_core-2.1.0 lib/spree/core/validators/email.rb
spree_core-2.0.4 lib/spree/core/validators/email.rb
spree_core-2.0.3 lib/spree/core/validators/email.rb
spree_core-1.3.3 lib/spree/core/validators/email.rb
spree_core-1.2.5 lib/spree/core/validators/email.rb
spree_core-2.0.2 lib/spree/core/validators/email.rb