I would recommend the before_create callback. it seems you do not need to overwrite the the attributes everytime you update it, and before_create work only for new records.
after_initialize has performance issue and overwrite the default getter may cause side effects. hope that helps. Regards, Peng Zuo On Tue, Sep 23, 2008 at 8:10 AM, Brandon Keepers <[EMAIL PROTECTED]> wrote: > On Mon, Sep 22, 2008 at 6:05 PM, Leon Bogaert > <[EMAIL PROTECTED]> wrote: >> >> This is the case: when you call save() on an activerecord::base object >> it goes through all the attrs[:] and saves them. But I have a lot of >> attributes overriden. >> For example: >> >> class Tester >> def name >> write_attribute(:name, 'This is just a silly example!') >> read_attribute(:name) >> end >> end >> >> t = Tester.new >> t.save >> >> But when I do save() it doesn't get saved to the database if I haven't >> called the name() method. >> >> When I add a validation, the method somewhere gets called and it is >> added to the attrs instance variable. >> >> Is there a way, without adding validations for every attribute, to call >> the attribute methods before save? >> >> I thought about using a before_save filter, but maybe someone would new >> a better/other way. >> >> I'm just curious if it's possible. Maybe I'm on the wrong track and >> there may be better ways to override the attribute getters? > > You're essentially trying to set default values for your attributes, right? > If so, I would use the #after_initialize callback, which AR calls when a new > instance of the class is created. > > class Tester < ActiveRecord::Base > def after_initialize > self.name ||= 'Default name' > end > end > > Brandon > -- > -------------------------------------------------------------------------------- > Sessions by Collective Idea: Ruby on Rails training in a vacation setting > http://sessions.collectiveidea.com > > > > -- Murray Walker - "And now, excuse me while I interrupt myself." --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---

