Is there an addition to the Rails Recipe or the method in AWDWR to allow a user to change his/ her password? I have put something together that does all the work again - mostly because I'm not sure how to leverage on
methods like 'password=' that are defined in the model. Has anyone got a ready sample that I could learn from?
In the controller:
def change_password
user = User.find(session[:user])
if request.post? &&user.update_attributes(params[:user])
flash[:notice] = "Successfully updated your password."
redirect_to home_url && return
else
flash[:notice] = "There was a problem, please check for errors and try again." end
end
In the view:
You'll need to tweak validations a bit to get everything to work. If you are validating the presence of other attributes on save, you'll need to add them in before saving.
The reasoning for having a password= method is that there is no
underlying field in the database for ActiveRecord to automatically
create methods for. The password attribute has to be set up manually.
You use the writer just as you'd assign a value to a model's other fields.
def password password end
def password=(pass) password = pass end
User.password = 'secret' # this line will invoke password= pass = User.password # this line will invoke password
What problems are you running into that you have to recreate different methods to update? You didn't give any specifics on the problems that you are having, you just gave them for your work-arounds.