Sha256: 4a5763f8b3c47829475be920b65af67737a494018642519f3b83c5dbb0efa11a

Contents?: true

Size: 868 Bytes

Versions: 1

Compression:

Stored size: 868 Bytes

Contents

require 'active_support/i18n'
I18n.load_path << File.dirname(__FILE__) + '/locale/en.yml'
require 'active_model'
require 'mail'

module ActiveModel
  module Validations
    class EmailValidator < ActiveModel::EachValidator
      
      def initialize(options)
        options.reverse_merge!(:message => :email)
        super(options)
      end

      def validate_each(record, attribute, value)

        begin
          mail = Mail::Address.new(value)

          unless mail.address == value && mail.domain.split(".").length > 1
            record.errors.add(attribute, options[:message])
          end
        rescue
          record.errors.add(attribute, options[:message])
        end
      end
    end

    module ClassMethods
      def validates_email(*attr_names)
        validates_with EmailValidator, _merge_attributes(attr_names)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
validate_email-0.1.6 lib/validate_email.rb