Подтвердить включение в массив параметров OR be nil
У меня есть модель, в которой я хотел бы ограничить ввод для поля, чтобы он был равен нулю или попадал в указанный массив значений. Я могу заставить часть включения работать, но бит allow_nil: true
, похоже, не работает для меня:
class Mock::Patient < ActiveRecord::Base
LANGUAGE_OPTIONS = %w[English Spanish French German Chinese Hindi Punjabi]
validates :preferred_language, inclusion: { in: LANGUAGE_OPTIONS }
end
Я пробовал изменить эту последнюю строку на такие вещи, как:
validates :preferred_language, inclusion: { in: LANGUAGE_OPTIONS }, allow_nil: true
Но безрезультатно. Какой самый простой способ выразить эту комбинацию простого включения или nil?
Ответы
Ответ 1
правильная форма, позволяющая nil проверять, сохраняя при этом ограниченный набор значений:
validates :preferred_language, inclusion: { in: LANGUAGE_OPTIONS, allow_nil: true }
сообщите, как опция allow_nil находится внутри опции включения хеш
Ответ 2
Я решил это, сделав строку validates следующим образом:
validates :preferred_language, inclusion: { in: LANGUAGE_OPTIONS + [nil] }
Таким образом, я допускаю nil, но я не изменяю константу, которую я использую в своем представлении для подачи коллекции опций выбора. Я с тех пор также добавил массив с элементом '', поэтому мне не нужно явно указывать пробел в моем помощнике ввода формы.