Ah, sweet... yeah that "self.new_record?" piece is what
I'm looking for.  Thanks!

        -glenn

Hugh Bien 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] 
> <mailto:[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]
>     <mailto:[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]>
>          > <mailto:[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] <mailto:[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