Jump To Content

Using the Immutable Attribute Plugin

Rails surprisingly does not include a validation method to make a model attribute immutable. (That is, the attribute can not be changed after it is set the first time.) I created this validation plugin to help that.

To install:


 script/plugin install git://github.com/wmoxam/immutable-attribute-plugin.git

To use, drop this in your model:


 ensures_immutability_of :attribute_name

You can specify multiple immutable attributes in one line:


 ensures_immutability_of :attribute1, :attribute2

Now if something attempts to set a protected attribute, it will raise an error. For example:


class Account < ActiveRecord::Base
 ensures_immutability_of :username, :email
end

account = Account.create(:username => 'jgreen')
...
account.update(:username => 'jgreen') # raises ActiveRecord::ImmutableAttributeError

This plugin works especially nicely with the “Email Veracity Plugin”: If you have an email-verification process (such as sending an activation email) then you will most likely want to mark the email attribute as immutable, and create new records for when users add other email addresses.

But this is probably most excellent for username and relationship attributes (foreign key fields). That is exactly how we are using it on Languify

  • Your comment will be modifiable for 10 minutes after posted.

Page Author

Avatar
wmoxam
Name
wmoxam

From Here You Can…

Information

Most Recent Related Content

Published In…

This work is public domain.