Development Tip

In rails, how can I find out what caused a .save() to fail, other than validation errors?

yourdevel 2020. 9. 25. 23:40
반응형

In rails, how can I find out what caused a .save() to fail, other than validation errors?


I have an ActiveRecord model which is returning true from valid? (and .errors is empty), but is returning false from save(). If the model instance is valid, how can I find out what's causing the save to fail?


Check all your callbacks.

I had a problem like this where I had and "after_validate" method that was failing after I had made a bunch of changes to the model. The model was valid but the "after_validate" was returning false, so if I used model.valid it said true, but then if I saved it gave me validation errors (passed through from the after_validate callback). It was weird.

Look at the application trace and you should be able to see what line of code is raising the exception.


Try using the bang version save! (with an exclamation mark at the end) and inspecting the resulting error.


If @user.save (for example) returns false, then just run this to get all the errors:

@user.errors.full_messages

Yea, I fixed this issue by making sure I return true in all my before_* callbacks then it starts working :)


The problem I had was that I had forgotten to add the validation to the model.

class ContactGroup < ActiveRecord::Base
  validates_presence_of :name
end

참고URL : https://stackoverflow.com/questions/4714001/in-rails-how-can-i-find-out-what-caused-a-save-to-fail-other-than-validatio

반응형