Відповіді:
З Rails 3 ви можете:
validates :field, inclusion: { in: [ true, false ] }
validates :field, inclusion: [true, false]
validates :field, presence: true
) для булевого поля (поле не буде дійсним для false
значення). Але в обох рейках 3 і 4, маючи validates :field, inclusion: [true, false]
тест на включення до списку значень, з побічним ефектом можна перевірити наявність поля (якщо, звичайно, одне з цих значень nil
).
validates :field, inclusion: { in: [ true, false ], message: "Please, select one!" }
Я вважаю, що для булевого поля вам потрібно буде зробити щось на кшталт:
validates_inclusion_of :field_name, :in => [true, false]
У більш старій версії API : "Це пов'язано з тим, як Object # blank? Обробляє булеві значення. False.blank? # => True"
Я не впевнений, чи все-таки це буде добре для Rails 3, хоча сподіваюся, що це допомогло!
true
.
Коли я застосовую це, я отримую:
Попередження від слідків:
Ви використовуєте validate_inclusion_of
для того, щоб стверджувати, що булева графа дозволяє булеві значення та забороняє не булеві. Пам’ятайте, що повністю перевірити це неможливо, оскільки булеві стовпці автоматично перетворять не булеві значення в булі. Отже, вам слід розглянути можливість видалення цього тесту.
Ви можете використовувати більш коротку версію:
validates :field, inclusion: [true, false]
Додаткова думка. Маючи справу з перерахунками, я також люблю використовувати постійне:
KINDS = %w(opening appointment).freeze
enum kind: KINDS
validates :kind, inclusion: KINDS
Відповідь відповідно до Rails Docs 5.2.3
Цей помічник (наявність) підтверджує, що вказані атрибути не порожні. Він використовує бланк? метод перевірити, чи є значення нульовим чи порожнім рядком, тобто рядок, який порожній або складається з пробілів.
Так як false.blank? вірно, якщо ви хочете перевірити наявність булевого поля, вам слід скористатися однією з таких перевірок:
validates :boolean_field_name, inclusion: { in: [true, false] }