Я хочу убедиться, что строковый атрибут не равен нулю, но разрешить пустые строки.
Как в:
validates name: not_nil, allow_empty: true





Чтобы разрешить пустую строку, но отклонить nil в обратном вызове проверки активной записи, используйте условную процедуру для условного требования наличия атрибута, если он не nil.
Итак, код выглядит так:
validates :name, presence: true, if: proc { name.nil? }
Но вы, вероятно, захотите разрешить null. Тогда не проверяйте. Все еще проверяете присутствие? в коде для нулевой или пустой строки.
вы также можете сделать:
validates :name, exclusion: { in: [nil] }
Альтернативно
validates :name, presence: true, allow_blank: true
allow_blank также допускает значения nil, даже с presence: true.
Вероятно, вам следует просто написать собственный метод проверки, очень запутанно использовать
validates presence: trueв поле, которое должно содержать пустые строки. Это противоположно тому, что этот валидатор должен обеспечивать.