On Saturday, 2 August 2014 11:41:46 UTC-4, Ruby-Forum.com User wrote:
>
> Eric Saupe wrote in post #1154001: 
> > First change the validates to only validate if a 
> > password is being passed. 
> > 
> > validates :password, length: { minimum: 6 }, :if => :password 
> > 
> > 
> > Second, remove the parameters for password if the are blank on your 
> > update 
> > method. 
> > 
> > if params[:password].blank? 
> >   params.delete(:password) 
> > end 
> > 
>
> The latter I only did, because in this case it would obviously not work, 
> but I was not aware of the trick for the validates function! 
>
> I think I'll have to do this for all 'validates' in my application, 
> because I often have the case that I will update only some of the 
> attributes. I wonder *why* validates looks at attributes which are not 
> part of the update. Is there a use case where this makes sense? 
>
>
This is usually the desired behavior, because you want to ensure that the 
*whole* record is valid before saving.

:password is a outlier here, since it isn't persisted to the database. In 
your case, I might add something like:

validates :password, length: { minimum: 6 }, on: :create

Since (unless users can change their passwords) you only need to check it 
when creating a new record.

--Matt Jones

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/53fb439d-0a42-482c-b77e-957174e14c0b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to