module EmailAddress

EmailAddress parses and validates email addresses against RFC standard, conventional, canonical, formats and other special uses.

ActiveRecord v5.0 Custom Type

1) Register your types

# config/initializers/email_address.rb
ActiveRecord::Type.register(:email_address, EmailAddress::Address)
ActiveRecord::Type.register(:canonical_email_address,
                            EmailAddress::CanonicalEmailAddressType)

2) Define your email address columns in your model class

class User < ApplicationRecord
  attribute :email, :email_address
  attribute :canonical_email, :canonical_email_address

  def email=(email_address)
    self[:canonical_email] = email_address
    self[:email] = email_address
  end
end

3) Profit!

user = User.new(email:"Pat.Smith+registrations@gmail.com")
user.email           #=> "pat.smith+registrations@gmail.com"
user.canonical_email #=> "patsmith@gmail.com"

ActiveRecord v5.0 Custom Type

1) Register your types

# config/initializers/email_address.rb
ActiveRecord::Type.register(:email_address, EmailAddress::Address)
ActiveRecord::Type.register(:canonical_email_address,
                            EmailAddress::CanonicalEmailAddressType)

2) Define your email address columns in your model class

class User < ApplicationRecord
  attribute :email, :email_address
  attribute :canonical_email, :canonical_email_address

  def email=(email_address)
    self[:canonical_email] = email_address
    self[:email] = email_address
  end
end

3) Profit!

user = User.new(email:"Pat.Smith+registrations@gmail.com")
user.email           #=> "pat.smith+registrations@gmail.com"
user.canonical_email #=> "patsmith@gmail.com"