Given validation on a field such as the following:

validates :entity_type, inclusion: { in: %w(1 2), message: "is invalid" }

The error messages that will be returned if the user enters nil for the field are

“can’t be blank”, ” is invalid”

How can this validation be changed so that only 'can't be blank' is returned if nil is the entered value for the field?

This is a case where we don't want nil to be a valid value, just to clean up the validation messaging.

1

There are 1 answers

0
gbright On BEST ANSWER

I haven't seen any documentation on this anywhere so wanted to give an answer.

The answer is to use allow_nil: true with the inclusion validator.

validates :entity_type, inclusion: { in: %w(1 2), message: "is invalid" }, allow_nil: true

Using this means if a nil value is given for the field, only the 'can't be blank' message will be returned from the validator, while non-nil invalid values will continue to work as normal.