From: Rick DeNatale Date: 2009-02-23T09:23:53+09:00 Subject: Re: Hashed_Pasword? --0016361e7bdc6b79f104638b06a5 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On Sun, Feb 22, 2009 at 3:27 PM, Michael Malone wrote: > > 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 >>> >>> >> >> >> > 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? > > 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 Schroeder has the right diagnosis. undefined local variable or method `hashed_password' for # 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. -- Rick DeNatale Blog: http://talklikeaduck.denhaven2.com/ Twitter: http://twitter.com/RickDeNatale WWR: http://www.workingwithrails.com/person/9021-rick-denatale LinkedIn: http://www.linkedin.com/in/rickdenatale --0016361e7bdc6b79f104638b06a5--