Используя валидации Rails, как добавить в белый список фразу, например, «Изучить Ruby» - PullRequest
0 голосов
/ 09 мая 2018

У меня есть validates_presence_of :subject, inclusion: { in: %w( 'Learn Ruby' 'Learn Ruby on Rails'), message: "Please select a valid Subject" } Изучите Ruby и изучите Ruby on Rails - примеры того, что я пытаюсь сделать.

Я безуспешно пытался использовать одинарные и двойные кавычки.

Я также пробовал массив: validates_presence_of :subject, inclusion: { in: ['Learn Ruby', 'Learn Ruby on Rails'], message: "Please select a valid Subject" } без успеха.

Я знаком с Phrasing gem ; однако установка кажется излишней. (И, не попробовав это, я не уверен, что это поможет здесь.)

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Похоже, вы смешиваете старые методы типа validates_x_y с Rails 3.x validates, который имеет гораздо более общее назначение.

validates_presence_of относится к эпохе Rails 1.x и может только иметь дело с присутствием чего-либо. В качестве аналога есть validates_inclusion_of, но реальный ответ - использовать вызов validates, который можно настроить для проверки любого количества одновременно.

Обозначение для этого:

validates :subject,
  inclusion: {
    in: [
      'Learn Ruby',
      'Learn Ruby on Rails'
    ],
    message: "Please select a valid Subject"
  }

Я также добавил некоторое форматирование, чтобы сделать происходящее более понятным. Эти строки могут запутаться.

Если ваше введение использует эти методы validates_presence_of старого стиля, оно устарело, и вам следует поискать более свежую версию или более точную ссылку. Как примечание, официальная документация Rails обычно является отличным местом для начала.

0 голосов
/ 09 мая 2018

Как насчет ActiveModel validates_inclusion_of?

validates_inclusion_of :subject, in: ['Learn Ruby', 'Learn Ruby on Rails'], message: 'Please select a valid Subject'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...