Ответ 1
С Rails 3 вы можете сделать:
validates :field, inclusion: { in: [ true, false ] }
Есть ли у рельсов валидатор, например validates_numericality_of
для логического или мне нужно перевернуть его?
С Rails 3 вы можете сделать:
validates :field, inclusion: { in: [ true, false ] }
Я считаю, что для логического поля вам нужно сделать что-то вроде:
validates_inclusion_of :field_name, :in => [true, false]
Из более старой версии API: "Это связано с тем, что Object # blank?" обрабатывает логические значения. false.blank? # = > true "
Я не уверен, что это все равно будет хорошо для Rails 3, надеюсь, что это помогло!
Когда я применяю это, я получаю:
Предупреждение о сотах-подсказках:
Вы используете validate_inclusion_of
, чтобы утверждать, что логический столбец
допускает логические значения и запрещает небулевые значения. Имейте в виду, что это
невозможно полностью проверить это, так как булевские столбцы будут
автоматически конвертировать небулевые значения в логические. Следовательно, вы
следует рассмотреть возможность удаления этого теста.
Вы можете использовать более короткую версию:
validates :field, inclusion: [true, false]
Дополнительная мысль. При работе с перечислениями мне также нравится использовать константу:
KINDS = %w(opening appointment).freeze
enum kind: KINDS
validates :kind, inclusion: KINDS