On Dec 21, 2012, at 1:12 PM, Dan Brooking wrote:

> So is the way I'm doing it right?  Or just a way I happened to hack it to 
> work?
> 
> The way my code was looking was basically:
> 
> Page.new(:url => 'http://www.yahoo.com')
> 
> class Page < ActiveRecord::Base
>   attr_accessible :url, :title
> 
>   after_initialize :parse_page_params
> 
>   def parse_page_params
>     @title = "test"
>   end
> 

Have a look at the documentation for after_initialize -- it runs once, after 
Rails itself is fully initialized. Is that the point at which you mean to 
instantiate the instance variable @title? Which instance of its class would it 
attach to? Can you please describe what you intend to do with @title -- where 
it's going to be used?

Walter

> and this wasn't working...  I understand what you said above about the 
> instance variables, methods, initializing, etc.. but still a little unclear 
> about why that code doesn't work as I'm setting it.  Is it because Rails uses 
> the method name of title which hasn't been initailized in my assignment above?
> 
> 
> 
> 
> On Fri, Dec 21, 2012 at 12:43 PM, Walter Lee Davis <[email protected]> wrote:
> 
> On Dec 21, 2012, at 12:37 PM, Dan Brooking wrote:
> 
> > I posted a previous message about overriding initialize... because I was 
> > having issues setting some of the parameters.  I have a Page model that has:
> >
> > attr_accessible :url, :title, :doc, :domain
> >
> > and it's called via:
> >
> > Page.new(:url => 'http://www.yahoo.com')
> >
> > Since I'm only passing in the url to new, I needed to set the other 
> > parameters.  I was trying to do this via an after_initialize callback which 
> > wasn't working so tried overriding initialize... still not working.
> >
> > What I found out was that in my after_initialize, I was referring to title 
> > as @title which is why it was not working.  I switched it to self.title and 
> > it works fine.
> >
> > My question is - why?
> 
> @title is an instance variable. Until you set it, it doesn't exist. Having a 
> method on the model called title (or an accessor, or some other Rails magick) 
> does not instantiate that method's return until and unless you ask for it by 
> calling the method. Calling self.method_name just makes it clear which 
> same-named method you really mean. Self is implied much of the time, but when 
> you have all the many method_missing options available, it might not be the 
> first one such that gets called.
> 
> Walter
> 
> >
> > --
> > 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].
> > To view this discussion on the web visit 
> > https://groups.google.com/d/msg/rubyonrails-talk/-/-ncNakybQ-cJ.
> > For more options, visit https://groups.google.com/groups/opt_out.
> >
> >
> 
> --
> 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 https://groups.google.com/groups/opt_out.
> 
> 
> 
> 
> -- 
> 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 https://groups.google.com/groups/opt_out.
>  
>  

-- 
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 https://groups.google.com/groups/opt_out.


Reply via email to