I just upgraded my rails to 2.3.4 and I noticed this with validations:
Lets say I have a simple model Company which has a name. nothing to it.
I want to run my own validation:
class Company < ActiveRecord::Base
validate :something
def something
false
end
end
saving the model actually works in this case.
The same thing happens if i override validate() and return false.
I noticed this in a more complex model where my validation was returning false, but the object was still saving…I tried it out in an essentially empty model and the same thing applied. Is there a new practice I am missing? This doesn’t seem to be the case in some of my older rails code.
Your validations are executed when you use the
validatemethod. However rails doesn’t relies on the returned value.It relies on if there are validations errors or not. So you should add errors when your model doesn’t validates.
Or, if the error is not related to a field :
Then your model won’t be saved because there are errors.