Hiho, Thought this might of some use to someone out there. - John ------------------------------------------------------------------------ ------- DESCRIPTION: attr_immutable is simple plugin for Rails 0.14.3+ which will cause attributes flagged as immutable to be just that: immutable. The attributes flagged will be rendered frozen on read, and throw an ImmutableAttributeAssignmentError on assignment only *after* the record has been persisted (save/ create) or loaded (find). Comments and suggestions welcome. ------------------------------------------------------------------------ ------- INSTALLATION: Download and extract the following into your vendor/plugins directory. http://www.psynix.com/rails/attr_immutable/attr_immutable.tar.gz http://www.psynix.com/rails/attr_immutable/attr_immutable.tar.bz2 ------------------------------------------------------------------------ ------- USAGE: class User < ActiveRecord attr_immutable :username # Make username immutable after save/create end me = User.new me.username = ''testuser'' => ''testuser'' me.password = ''testpassword'' => ''testpassword'' me.save => true me.reload me.username.frozen? => true me[:username].frozen? => true me.attributes[''username''].frozen? => true me.username = ''anotherusername'' => Plasma::ImmutableAttributeAssignmentError thrown me[:username] = ''anotherusername'' => Plasma::ImmutableAttributeAssignmentError thrown This plugin was developed using Rails 0.14.3. It may work on previous versions. Use at your own risk. -- John Meredith <jmeredith-0iPedL6B8ETQT0dZR+AlfA@public.gmane.org>
Don''t wanna step on your toes, but one could as well do class User < ActiveRecord attr_protected :name end Then you as an admin would still have the possibilibty to change the username through proper controllers. Your solution might have it''s place though - it''s certainly a cleaner solution if one never ever wants to change an attribute (Just wrote this in case you didn''t know about attr_protected) Cheers :) Rob
Hi, I''m fully aware of attr_protected ... it does however serve a different purpose ie. that of disabling mass assignment of specified attributes. Thanks for the comments anyway :-) - John On 28/11/2005, at 8:03 PM, Robert wrote:> Don''t wanna step on your toes, but one could as well do > > class User < ActiveRecord > attr_protected :name > end > > > Then you as an admin would still have the possibilibty to change > the username through proper controllers. > > > Your solution might have it''s place though - it''s certainly a > cleaner solution if one never ever wants to change an attribute > (Just wrote this in case you didn''t know about attr_protected) > > > Cheers :) > Rob > _______________________________________________ > Rails mailing list > Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails-- John Meredith <jmeredith-0iPedL6B8ETQT0dZR+AlfA@public.gmane.org>