Error message from the web server:
undefined local variable or method `hashed_password’ for #<User id: nil,
login: “”, email: “”, hashed_passwd: nil>
I am stuck!
Is the variable named hashed_password or hashed_passwd?
Here is the entire section of code :
def self.authenticate(login, password)
user = find_by_login(login)
return user if user && user.authenticated?(password)
end
def authenticated?(password)
hashed_password == encrypt(password)
end
protected
def encrypt_new_password
return if password.blank?
self.hashed_password = encrypt(password)
end
def password_required?
hashed_password.blank? || !password.blank?
end
def encrypt(string)
Digest::SHA1.hexdigest(string)
end
Error message from the web server:
undefined local variable or method `hashed_password’ for #<User id: nil,
login: “”, email: “”, hashed_passwd: nil>
I am stuck!
Is the variable named hashed_password or hashed_passwd?
Here is the entire section of code :
def self.authenticate(login, password)
user = find_by_login(login)
return user if user && user.authenticated?(password)
end
def authenticated?(password)
hashed_password == encrypt(password)
end
protected
def encrypt_new_password
return if password.blank?
self.hashed_password = encrypt(password)
end
def password_required?
hashed_password.blank? || !password.blank?
end
def encrypt(string)
Digest::SHA1.hexdigest(string)
end
The web server is calling out line 47 which is hashed_password.blank? ||
!password.blank?
I think the hashed_password.blank? is my problem but I do not know why.
Um, shouldn’t you be storing the result of the hash into
hashed_password?
Also, if this is part of a User class (as suggested by the output
earlier) then you probably want to use @ -scoped variables, not
method-local.
def Klass
some_variable = value
end
is NOT the same as:
def Klass
def initialize @some_variable = value
end
end
That seems the most likely problem to me. If this doesn’t solve your
problem, could you post the point at which you initialise/declare your
variables?
Cheers,
Michael
=======================================================================
This email, including any attachments, is only for the intended
addressee. It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
altered or corrupted during transmission.
def encrypt(string)
def Klass
That seems the most likely problem to me. If this doesn’t solve your
problem, could you post the point at which you initialise/declare your
variables?
No, you should be aware that this is pretty obviously an ActiveRecord
model
object in a Rails app. The accessor methods for database fields are
generated automagically from the database schema.
It’s also probably using either the restful_authentication plugin, or
it’s
older brother acts_as_authenticated, both of which normally use
crypted_password, instead of hashed_password for the field name,
although I
beleive that this can be overridden when the authentication code is
generated.
I’m pretty sure that Hassan S. has the right diagnosis.
undefined local variable or method `hashed_password’ for #<User id: nil,
login: “”, email: “”, hashed_passwd: nil>
This indicates that the database column is named hashed_passwd NOT
hashed_password, so ActiveRecord isn’t providing a method with the name
hashed_password.
This is the kind of question which would probably be answered much more
quickly, and with less confusion on the rails mailing list.
def encrypt(string)
def Klass
That seems the most likely problem to me. If this doesn’t solve your
problem, could you post the point at which you initialise/declare your
variables?
No, you should be aware that this is pretty obviously an ActiveRecord
model
object in a Rails app. The accessor methods for database fields are
generated automagically from the database schema.
It’s also probably using either the restful_authentication plugin, or
it’s
older brother acts_as_authenticated, both of which normally use
crypted_password, instead of hashed_password for the field name,
although I
beleive that this can be overridden when the authentication code is
generated.
I’m pretty sure that Hassan S. has the right diagnosis.
undefined local variable or method `hashed_password’ for #<User id: nil,
login: “”, email: “”, hashed_passwd: nil>
This indicates that the database column is named hashed_passwd NOT
hashed_password, so ActiveRecord isn’t providing a method with the name
hashed_password.
This is the kind of question which would probably be answered much more
quickly, and with less confusion on the rails mailing list.