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

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 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 rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com.
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 rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com.
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 rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Search Discussions

Discussion Posts

Previous

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 3 of 11 | next ›
Discussion Overview
grouprubyonrails-talk @
categoriesrubyonrails
postedDec 21, '12 at 5:37p
activeDec 23, '12 at 7:49a
posts11
users6
websiterubyonrails.org
irc#RubyOnRails

People

Translate

site design / logo © 2022 Grokbase