I added a validation to an objects using:
validate :field, presence: true
I found they do not give error messages. I changed them to
I believe the :validate declaration is used for custom validation where as :validates is used for generic validation like presence, uniqueness etc on a field
The validate method looks for a method with the parameter's name, i.e.
if you do validate :field it will look for
def field
end
on your object. Since Rails defines an attr_accessor for every database field the validate :field would call the field's reader method.
If the validation function returns true or if there is an error object, i.e. object.errors is not empty, then the object is considered valid?
Hence the reason in ligthouse issue, they complain that validate silently bypasses the validation :)
Hope this make sense