Class: EmailAddress::EmailAddressType

Inherits:
ActiveRecord::Type::Value
  • Object
show all
Defined in:
lib/email_address/email_address_type.rb

Overview

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:"[email protected]")
user.email           #=> "[email protected]"
user.canonical_email #=> "[email protected]"

Instance Method Summary collapse

Instance Method Details

#cast(value) ⇒ Object

From user input, setter



33
34
35
# File 'lib/email_address/email_address_type.rb', line 33

def cast(value)
  super(EmailAddress.normal(value))
end

#deserialize(value) ⇒ Object

From a database value



38
39
40
# File 'lib/email_address/email_address_type.rb', line 38

def deserialize(value)
  value && EmailAddress.normal(value)
end

#serialize(value) ⇒ Object

To a database value (string)



43
44
45
# File 'lib/email_address/email_address_type.rb', line 43

def serialize(value)
  value && EmailAddress.normal(value)
end