How to know which validation failed in the model validations.

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

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

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.

Here I share my experience in open source.

http://www.sathia27.wordpress.com

http://www.lquery.com

Regards

sathia