Ошибка TypeEr в проверке перечисления при сохранении объекта - PullRequest
0 голосов
/ 13 января 2019

У меня есть перечисление, к которому я пытаюсь добавить проверку, но оно дает мне ошибку типа, что массив не является ни символом, ни строкой, когда я сохраняю любую запись в базе данных. Вот код:

validates :animal, inclusion: { in: %w(DOG, CAT), message: '%{value} is not a valid animal' }
enum animal: [:DOG, :CAT]

Я получаю следующую ошибку: Ошибка типа: ["DOG", "CAT"] не является ни символом, ни строкой

1 Ответ

0 голосов
/ 13 января 2019

ActiveRecord eunm не требуется отдельная проверка для проверки включения. Просто удалите эту пользовательскую проверку. Rails выдаст ошибку по умолчанию, если вы используете значение, которое не является частью списка значений enum.

Протестировано с Rails 5.2.2:

class Person < ActiveRecord::Base
  enum animal: [:DOG, :CAT]
end

Тест:

p = Person.new
=> #<Person ...>

p.animal = :DOG # this works
p.animal = :FROG

Traceback (most recent call last):
ArgumentError ('FROG' is not a valid animal)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...