Class: EmailAddress::EmailAddressType
- Inherits:
-
ActiveRecord::Type::Value
- Object
- ActiveRecord::Type::Value
- EmailAddress::EmailAddressType
- 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
-
#cast(value) ⇒ Object
From user input, setter.
-
#deserialize(value) ⇒ Object
From a database value.
-
#serialize(value) ⇒ Object
To a database value (string).
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 |