Forum: Ruby on Rails Can anyone see why the pw validation is failing?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
7ed559ec7f9fc6a96ddc1690f06e7f80?d=identicon&s=25 Chris Olsen (chrisolsen)
on 2009-01-13 05:02
I have a simple form to allow the user to update their password. It
always throws the error saying that the password is too short (they are
over the min of 6 chars).  The passwords are making it in to the model
just fine.  If I raise an exception within the before_validation user
method the password and password confirmation values both exist, but it
still throws an error.

I do have both the pw and pw_conf as attr_accessible in the users model.

I am stumped to why it is doing this.  Any ideas?

def password
    @user = current_user
    return if request.get?

    if @user.update_attributes(
      :password => params[:password],
      :password_confirmation => params[:password_confirmation])
        flash[:success] = "Your password has been updated."
        redirect_to admin_user_path(@user)
    else
      render :action => :password
    end
  end
7ed559ec7f9fc6a96ddc1690f06e7f80?d=identicon&s=25 Chris Olsen (chrisolsen)
on 2009-01-13 05:15
Here is the form.

- form_tag "/admin/users/password"  do
  %fieldset
    = form_field("Password", :tip => "required") { password_field
:password, nil, :size => 15 }
    = form_field("Password Confirmation", :tip => "required") {
password_field :password_confirmation, nil, :size => 15 }

  .buttons
    = submit_tag "Save Password"
    or
    = link_to "Cancel", admin_user_path(@user)
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2009-01-13 10:31
(Received via mailing list)
On Jan 13, 4:15 am, Chris Olsen <rails-mailing-l...@andreas-s.net>
wrote:
> Here is the form.
>
> - form_tag "/admin/users/password"  do
>   %fieldset
>     = form_field("Password", :tip => "required") { password_field
> :password, nil, :size => 15 }
>     = form_field("Password Confirmation", :tip => "required") {
> password_field :password_confirmation, nil, :size => 15 }
>

Looking at the params that are submitted would probably tell you why.
You're abusing password_field by passing nil as the second argument.
You could either use form builders, form for etc... use password_field
properly (ie first parameter is the name of an instance variable, 2nd
is a method name) or use password_field_tag.

Fred
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2009-01-13 10:33
(Received via mailing list)
On Jan 13, 9:30 am, Frederick Cheung <frederick.che...@gmail.com>
wrote:
> > password_field :password_confirmation, nil, :size => 15 }
>
> Looking at the params that are submitted would probably tell you why.
> You're abusing password_field by passing nil as the second argument.
> You could either use form builders, form for etc... use password_field
> properly (ie first parameter is the name of an instance variable, 2nd
> is a method name) or use password_field_tag.

And if you're lucky enough that rails lets you get away with that,
then showing the code that's actually relevant here (ie the model and
its validations) would be useful.

Fred
7ed559ec7f9fc6a96ddc1690f06e7f80?d=identicon&s=25 Chris Olsen (chrisolsen)
on 2009-01-13 15:25
Frederick Cheung wrote:
> On Jan 13, 4:15�am, Chris Olsen <rails-mailing-l...@andreas-s.net>
> wrote:
>> Here is the form.
>>
>> - form_tag "/admin/users/password" �do
>> � %fieldset
>> � � = form_field("Password", :tip => "required") { password_field
>> :password, nil, :size => 15 }
>> � � = form_field("Password Confirmation", :tip => "required") {
>> password_field :password_confirmation, nil, :size => 15 }
>>
>
> Looking at the params that are submitted would probably tell you why.
> You're abusing password_field by passing nil as the second argument.
> You could either use form builders, form for etc... use password_field
> properly (ie first parameter is the name of an instance variable, 2nd
> is a method name) or use password_field_tag.
>
> Fred

That would be it.  What threw me was that when debugging things I could
see the password and pwc set within the model, both before and after the
validation, but it would continue saying that it wasn't there.

Thanks for the help Fred.
This topic is locked and can not be replied to.