Cagan Senturk
2006-Jun-09 12:53 UTC
[Rails] difference between @secure_password, secure_password
Hello,
I have a User object that extends ActiveRecord::Base.
And I have the following defined in it:
....
after_validation :crypt_password
...
def crypt_password
# write_attribute("secure_password", User.encrypt(password))
self.secure_password = User.encrypt(password)
end
..
And this works. Where I am getting confused about is the difference
between the following:
secure_password,
@secure_password
self.secure_password
Because these versions of crypt_password method don''t work:
def crypt_password
secure_password = User.encrypt(password)
end
def crypt_password
@secure_password = User.encrypt(password)
end
When I debug the app by placing a breakpoint right after the assigment
operation
in crypt_password, and ask for values:
@secure_password returns ''nil''
but
secure_password returns the encrypted password..
Which is very puzzling.
First of all, I thought @ was used for instance variables. So
@secure_password should be the one with the encrypted value assigned not
secure_password...
Let''s forget that..If secure_password contains the encrypted value as
I
see on the console, why would secure_password = User.encrypt(password)
call not do what I expect it to do?
Obviously, I''m pretty confused about the usage of @ vs. non-@, self,
etc..
Thanks,
Cagan
--
Posted via http://www.ruby-forum.com/.
