Let me make it clear what exactly I have tried. The original article contains following code,
def password=(pass) > @password=pass > self.salt = User.random_string(10) if !self.salt? > self.hashed_password = User.encrypt(@password, self.salt) > end > > > Since I have password as the field in database to save my password, I changed hashed_password to password > def password=(pass) > @password1=pass > self.salt = SecureRandom.hex(10) if !self.salt? > self.password = User.encrypt(@password1, self.salt) > end > This gave me the error, SystemStackError (stack level too deep): > > app/models/user.rb:26:in `password=' > > app/models/user.rb:27:in `password=' > > app/controllers/user_controlle > r.rb:31:in `new' > > app/controllers/user_controller.rb:31:in `createuser' > > > So I updated the method as follows, def passwordtext=(pass) > @password1=pass > self.salt = SecureRandom.hex(10) if !self.salt? > self.password = User.encrypt(@password1, self.salt) > end > And added a attr_accessor named as passwordtext. Also I renamed the password_field_tag in the view as "passwordtext". Doing this didn't help at all as the passwordtext method didn't execute. So, the problem how should I rename my variables to make it work. Regards Sumit Srivastava The power of imagination makes us infinite... On 29 July 2012 14:47, Frederick Cheung <frederick.che...@gmail.com> wrote: > > > On Friday, July 27, 2012 11:52:26 AM UTC+1, Sumit Srivastava wrote: >> >> >> Tom, >> That might be another solution. But what I am trying to know is why isn't >> this method working. And how is the action *def password=(pass) *actually >> being called. Because I didn't see any exclusive line where it is being >> called. My analysis says it is being executed because of the * >> attr_accessor* and having name same as that of the column *password. >> * * >> * > > *Am I right? >> >> * > > It's hard to say because it's extremely hard to piece together what code > exactly is excuting - seems like there's at least 3 different versions in > this thread, but it sounds to me like you've > definte a password= method always calls self.password= which (by > definition) calls your password= method and so you end up in an infinite > recursion. > The original tutorial you followed used a different name for the attribute > so instead of calling self.password they were calling self.hashed_password= > instead. You could either follow the tutorial (although as others have > pointed it, it is really old (Rails 3.2has a has_secure_password that > handles this) or use self.write_attribute(:password, some_value) when you > want to store the hashed value > > > Fred > > >> **Regards >> Sumit Srivastava >> >> The power of imagination makes us infinite... >> >> >> On 27 July 2012 16:12, Michael Pavling <pavl...@gmail.com> wrote: >> >>> On 27 July 2012 11:37, sumit srivastava <sumit.theinvinci...@gmail.com**> >>> wrote: >>> > This is what I receive, >>> > >>> > SystemStackError (stack level too deep): >>> > app/models/user.rb:26:in `password=' >>> > app/models/user.rb:27:in `password=' >>> > app/controllers/user_**controller.rb:31:in `new' >>> > app/controllers/user_**controller.rb:31:in `createuser' >>> > >>> > Here createuser action is used to store the user info into database. >>> > >>> > Line 31 reads as follows, >>> > @user = User.new(params[:user]) >>> >>> I would put a breakpoint on that line and then keep stepping into >>> until you see where it's looping :-/ >>> >>> -- >>> 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<rubyonrails-talk@googlegroups.com> >>> . >>> To unsubscribe from this group, send email to >>> rubyonrails-talk+unsubscribe@**googlegroups.com<rubyonrails-talk%2bunsubscr...@googlegroups.com> >>> . >>> For more options, visit >>> https://groups.google.com/**groups/opt_out<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+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msg/rubyonrails-talk/-/Ed2oQol364oJ. > > 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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.