ActiveModel field serializer for handling email addresses via Mail gem
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
.gitignore
.travis.yml
Gemfile
MIT-LICENSE
README.md
Rakefile
email_attribute.gemspec

README.md

EmailAttribute Build Status

ActiveModel attribute serialization using the mail gem.

Usage

Assuming you have a column named address on the email_addresses table, you can easily add email address handling with:

class EmailAddresses < ActiveRecord::Base
  email_address_attribute :address
end

email = EmailAddress.new({
  address: "Jeff Ching <ching.jeff@gmail.com>"
})

email.address
=> "Jeff Ching <ching.jeff@gmail.com>"

email.address = "ching.jeff@gmail.com"
email.address
=> "ching.jeff@gmail.com"

email.address = "some bad email address"
email.address
=> "some bad email address"

You can also specify a column as a email address list type, which is a serialized array of email addresses.

class Email < ActiveRecord::Base
  email_address_list_attribute :to
end

email = Email.new({
  to: "Jeff Ching <ching.jeff@gmail.com>; email@foo.com"
})
email.to
=> "Jeff Ching <ching.jeff@gmail.com>; email@foo.com"

email.to.length 
=> 2

Validating

EmailAttribute provides validation to ActiveModel. To use:

class EmailAddresses < ActiveRecord::Base
  email_address_attribute :address
  validates :address, email: { 
    allow_blank: true,
    message: "is invalid"
  }
end

email = EmailAddress.new({
  address: "some bad email address"
})
email.save
=> false

email.errors.full_messages
=> ["Address is invalid"]

Formatting

PhonyAttribute comes built with a few named formats. You can add your own by adding to the PhonyAttribute::PhoneNumber.named_formats hash. The value can be either an options hash (passed directly to Phony's format) or a callable Proc/lambda that yields the phone number object.

License

This project rocks and uses MIT-LICENSE.