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?
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.