Hi there!
I know what I am trying to do would seem laughably easy to some, but
pray accept my excuses for still being nothing more than a newbie where
rails is concerned. It seems there is so much to learn. And with rails
it’s always not about doing it, but doing it easily and meaningfully,
i.e. I’m asking how to do it the RIGHT way.
Now, I am having a very simple User/Session model (implemented using
Authlogic). In fact it is so simple, that all the functionality
regarding profile editing is put on ONE page. I’d like the user to be
able to set some details AND to be able to change their password. In
case the user desires to change their password, i.e. does NOT leave the
password field blank, they must be required to enter their current
password (sounds logical enough to me) in another field.
However, there are a couple of problems I am experiencing with this
simple scenario.
Firstly, how could I tell the User model to forget about the password
fields and NOT save them if they are empty (I know how to validate them
but that alone doesn’t seem to do it) and so Authologic wouldn’t
complain either?
Secondly, is there any way to validate that the entered password in the
password_check
field matches the current one, but do it using custom
validation callbacks (i.e. in the model, not in the controller)? I don’t
see how one could have access to the params hash from within the model
validation methods (and it doesn’t seems right to me to do so) so should
one use virtual attributes to do the check?!
Thirdly, even if all that validation was done in the controller (i.e. if
it is not possible to be done in the model), does anyone know how I am
to compare the entered password and the current one for it is stored in
encrypted form. There must be some method in Authologic that should be
able to do just that (i.e. not reviling the password, but comparing an
entered password against the current one).
And finally, is there any way to add errors to an ActiveRecord object
from within the controller (not the model) so as to be able to show them
along with the other validation errors if I can’t make that validation
in the model?
Thank you awfully much!
…and sorry for the bunch of words but it’s incredibly hard to express
extremely simple things simply.