On 5/30/08, Raj Singh <neeraj.jsr / gmail.com> wrote:
>
>  class User < ActiveRecord::Base
>   def before_save
>     self.name1 = fname + ' ' + lname
>     name2 = fname + ' ' + lname
>   end
>  end
>
>
>  In the callback I am using self for name1 and NOT using self for name2.
>  When a record is saved in the database I get proper value for name1 but
>  not for name2. Question is why?
>
>
>  In my judgement before name2 whether I use self or not should not matter
>  because there is an implicit self when there is no receiver. Then why
>  the difference in behavior?
>
> --
>  Posted via http://www.ruby-forum.com/.
>
>

The issue here is that the parser can't tell the difference between
calling the method #name2= or creating a new local variable named
"name2"

In this case, the proper course of action is to use "self.name2 = " to
make sure there is no confusion.

Jason