Rails: как я могу проверить, что что-то является логическим?

Есть ли у рельсов валидатор, например validates_numericality_of для логического или мне нужно перевернуть его?

Ответы

Ответ 1

С Rails 3 вы можете сделать:

validates :field, inclusion: { in: [ true, false ] }

Ответ 2

Я считаю, что для логического поля вам нужно сделать что-то вроде:

validates_inclusion_of :field_name, :in => [true, false]

Из более старой версии API: "Это связано с тем, что Object # blank?" обрабатывает логические значения. false.blank? # = > true "

Я не уверен, что это все равно будет хорошо для Rails 3, надеюсь, что это помогло!

Ответ 3

Когда я применяю это, я получаю:

Предупреждение о сотах-подсказках:

Вы используете validate_inclusion_of, чтобы утверждать, что логический столбец допускает логические значения и запрещает небулевые значения. Имейте в виду, что это невозможно полностью проверить это, так как булевские столбцы будут автоматически конвертировать небулевые значения в логические. Следовательно, вы следует рассмотреть возможность удаления этого теста.

Ответ 4

Вы можете использовать более короткую версию:

validates :field, inclusion: [true, false]

Дополнительная мысль. При работе с перечислениями мне также нравится использовать константу:

KINDS = %w(opening appointment).freeze

enum kind: KINDS

validates :kind, inclusion: KINDS