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
-~----------~----~----~----~------~----~------~--~---

Reply via email to