Есть ли у рельсов валидатор, например, validates_numericality_of
для логического значения, или мне нужно катать собственный?
ruby-on-rails
validation
aarona
источник
источник
validates :field, inclusion: [true, false]
validates :field, presence: true
) для логического поля (поле не будет действительным дляfalse
значения). Но как в Rails 3, так и в 4, наличиеvalidates :field, inclusion: [true, false]
будет проверять на включение в список значений с побочным эффектом для проверки наличия поля (если,nil
конечно, одно из этих значений не присутствует ).validates :field, inclusion: { in: [ true, false ], message: "Please, select one!" }
Я считаю, что для логического поля вам нужно будет сделать что-то вроде:
Из более старой версии API : «Это связано с тем, как Object # blank? Обрабатывает логические значения. False.blank? # => True»
Я не уверен, что это все еще подойдет для Rails 3, надеюсь, это помогло!
источник
true
.Когда я применяю это, я получаю:
Предупреждение от shoulda-matchers:
Вы используете,
validate_inclusion_of
чтобы утверждать, что логический столбец допускает логические значения и запрещает небулевские значения. Имейте в виду, что полностью протестировать это невозможно, так как логические столбцы автоматически преобразуют небулевы значения в логические. Следовательно, вам следует рассмотреть возможность удаления этого теста.источник
Вы можете использовать более короткую версию:
Дополнительная мысль. При работе с перечислениями я тоже люблю использовать константу:
источник
Ответ согласно Rails Docs 5.2.3
Этот помощник (присутствие) проверяет, что указанные атрибуты не пусты. Использует заготовку? , чтобы проверить, является ли значение нулевым или пустой строкой, то есть строкой, которая либо пуста, либо состоит из пробелов.
Поскольку false.blank? верно, если вы хотите проверить наличие логического поля, вы должны использовать одну из следующих проверок:
источник