Good call. That's a bit cleaner as well :D

On 2/11/08, Hugh Bien <[EMAIL PROTECTED]> wrote:
>
> There actually are after_initialize and after_find hooks for AR.  But you
> have to define them, ie.
> class Article
>   after_initialize :some_method  # don't do this, some_method won't be
> called
>
>   # do this instead
>   def after_initialize
>     self.some_field = "some value" if self.new_record?
>   end
> end
>
> I think the 'if self.new_record?' check might work to separate
> initialization from finding.
>
> On Feb 11, 2008 2:50 PM, Jordan Fowler <[EMAIL PROTECTED]> wrote:
>
> > In that case, you'd want to overwrite the initialize method, but very
> > carefully. Here's how I might do it:
> >
> > def initialize(*args)
> > super(*args)
> > # ... your code here
> > end
> >
> > Jordan
> >
> >
> >
> >
> > On 2/11/08, Glenn Little <[EMAIL PROTECTED]> wrote:
> > >
> > >
> > > I think I was really looking for something that would act as an
> > > initialization even if I wasn't necessarily saving the object to
> > > the database.  "after_initialize" seemed like the right thing until
> > > I found the somewhat dramatic extra effect of overwriting fields
> > > in find() results.  I probably just need to overwrite new() or
> > > something, but for now I'll just work around it.
> > >
> > >         -glenn
> > >
> > > Jordan Fowler wrote:
> > > > Glenn,
> > > >
> > > > I don't quite understand what you're asking for. When you call save
> > > on
> > > > an ActiveRecord object, the following happens:
> > > >
> > > >     * (-) save
> > > >     * (-) valid
> > > >     * (1) before_validation
> > > >       <
> > > http://api.rubyonrails.com/classes/ActiveRecord/Callbacks.html#M001303
> > > >
> > > >
> > > >     * (2) before_validation_on_create
> > > >       <
> > > http://api.rubyonrails.com/classes/ActiveRecord/Callbacks.html#M001305
> > > >
> > > >
> > > >     * (-) validate
> > > >     * (-) validate_on_create
> > > >     * (3) after_validation
> > > >       <
> > > http://api.rubyonrails.com/classes/ActiveRecord/Callbacks.html#M001304
> > > >
> > > >
> > > >     * (4) after_validation_on_create
> > > >       <
> > > http://api.rubyonrails.com/classes/ActiveRecord/Callbacks.html#M001306
> > > >
> > > >
> > > >     * (5) before_save
> > > >       <
> > > http://api.rubyonrails.com/classes/ActiveRecord/Callbacks.html#M001297
> > > >
> > > >
> > > >     * (6) before_create
> > > >       <
> > > http://api.rubyonrails.com/classes/ActiveRecord/Callbacks.html#M001299
> > > >
> > > >
> > > >     * (-) create
> > > >     * (7) after_create
> > > >       <
> > > http://api.rubyonrails.com/classes/ActiveRecord/Callbacks.html#M001300
> > > >
> > > >
> > > >     * (8) after_save
> > > >       <
> > > http://api.rubyonrails.com/classes/ActiveRecord/Callbacks.html#M001298
> > > >
> > > >
> > > > You should be able to find what you're looking for.
> > > >
> > > > --Jordan
> > > >
> > > >
> > > > On 2/11/08, *Glenn Little* <[EMAIL PROTECTED]
> > > > <mailto:[EMAIL PROTECTED]>> wrote:
> > > >
> > > >
> > > >     I'm looking for a callback that I think is something like
> > > >     after_initialize and before_create.  I'd like it to take
> > > >     effect whenever a new object is created (unlike before_create
> > > which
> > > >     I believe only happens before saving to a database),
> > > >     but I do *not* want it affecting the results of, say
> > > MyClass.find.
> > > >
> > > >     For instance, if in my_class.rb I define:
> > > >
> > > >       def after_initialize
> > > >         self.some_field = "initial value"
> > > >       end
> > > >
> > > >     then  MyClass.find(<conditions>).some_field *always* equals
> > > >     "initial value", which is definitely not what I want.
> > > >
> > > >     I'd like null values to remain null as well in finds, so putting
> > > >     in an "unless self.some_field" wouldn't help me.
> > > >
> > > >     Thanks...
> > > >
> > > >             -glenn
> > > >
> > > >     Website: http://www.jordanfowler.com
> > > >     Phone: 406.546.8055
> > > >     >
> > >
> > >
> > >
> >
> >
> > --
> > Jordan A. Fowler
> > 2621 First Ave Apt 5
> > San Diego, CA 92103
> > E-mail: [EMAIL PROTECTED]
> >
> > Website: http://www.jordanfowler.com
> > Phone: 406.546.8055
> >
> >
>
> >
>


-- 
Jordan A. Fowler
2621 First Ave Apt 5
San Diego, CA 92103
E-mail: [EMAIL PROTECTED]
Website: http://www.jordanfowler.com
Phone: 406.546.8055

--~--~---------~--~----~------------~-------~--~----~
SD Ruby mailing list
[email protected]
http://groups.google.com/group/sdruby
-~----------~----~----~----~------~----~------~--~---

Reply via email to