Mask An ActiveRecord Attribute
Let's say we have a User
model with backing table that has an email
attribute.
If we look up a User
record, we can grab its email because Rails provides an accessor to that attribute under the hood.
We can write a custom #email
method on User
to mask that attribute. We could do this for any number of reasons. One might be to always downcase the email before retrieving it and using it througout app code.
This uses the #read_attribute
method which retreives the type casted value before hitting the accessor method. We have to do this, rather than calling #email
directly, because that would result in an infinite loop.
I'd probably handle this email scenario at the DB-layer. Nevertheless, this demonstrates a technique we can use in a variety of scenarios at the Rails-layer.
Last updated