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