Hi, I have a Users model that has a bunch of verifications such as email being unique and password being present etc.. In my controller I want to do @user.save and in case this failed due to the email not being unique (The user being created is already present in the db), I want to send an appropriate notice and redirect to a certain page. Save only returns false when a certain validation fails, but I need to be able to tell through code which validation it failed. I was expecting it to throw certain types of exceptions based on what basic validation failed but this is not how it behaves. Any ideas? Thanks Samir -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Michael Pavling
2011-Nov-21 12:15 UTC
Re: How to know which validation failed in the model validations.
On 21 November 2011 05:28, Samir <samir.selman01-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> In my controller I want > to do @user.save and in case this failed due to the email not being > unique (The user being created is already present in the db), I want > to send an appropriate notice and redirect to a certain page. Save > only returns false when a certain validation fails, but I need to be > able to tell through code which validation it failed. I was expecting > it to throw certain types of exceptions based on what basic validation > failed but this is not how it behaves. Any ideas?Have a look at the docs for ActiveRecord::Errors. If you call ".save!" it will raise an exception (if that''s what you want), otherwise, you can inspect the errors object on an unsuccessful save to find out what went wrong. http://ar.rubyonrails.org/classes/ActiveRecord/Errors.html -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Sathia S
2011-Nov-22 10:15 UTC
Re: How to know which validation failed in the model validations.
> > > > I have a Users model that has a bunch of verifications such as email > being unique and password being present etc.. In my controller I want > to do @user.save and in case this failed due to the email not being > unique (The user being created is already present in the db), >In controller, You can get what error you get. Like, @user.errors @user.errors[:name] @user.errors.size // this will show how many errors. Regards sathia Here I share my experience in open source. http://www.sathia27.wordpress.com <http://www.sathia27.wordpress.com/>http://www.lquery.com<http://www.sathia27.wordpress.com/> -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.