Ruby на Rails: проверка двух условий включения с диапазоном - PullRequest
0 голосов
/ 29 января 2020

У нас есть проверка модели для проверки «год постройки».

  validates :year_built, inclusion: { in: 1900..(Date.today.year) }

Этот столбец недавно был изменен на строку, чтобы учесть еще два параметра «Быть ​​построенными» и «Новый».

Я хотел бы проверить, что единственными принятыми данными будут то, что выше (1900..дата), а также эти две строки:

validates :year_built, inclusion: { in: 1900..(Date.today.year) || ['New', 'To Be Built']}

Есть ли способ проверить как?

1 Ответ

1 голос
/ 29 января 2020

Смотрите здесь для проверок в Rails .

Валидатор включения является базовым c валидатором для диапазонов ИЛИ массивов, но не допускает этот тип "условных" логи c.

Хотя я сомневаюсь, что изменение столбца года в строку было лучшим выбором (, вы также можете условно проверить на основе другого столбца ), вы можете адаптировать свой идея и map / collect годы, с которыми вы хотите совпасть, и добавьте другие параметры в этот массив, например:

validates :year_built, inclusion: { in: (1900..(Date.today.year)).collect(&:to_s) + ['New', 'To Be Built']}

Но я думаю, что эти параметры слишком много разбирают в одном сложном для анализа линия. Если вы хотите сохранить свой столбец в виде String-столбца, вам следует подумать о написании пользовательской функции проверки, см. Здесь , чтобы узнать, как написать один .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...