Rails не позволяет создавать новое перечисление - метод экземпляра уже определен другим перечислением

Попытка добавить перечисление в класс пользователя:

enum vehicle: { car: 1, bus: 2, other: 3 }, _prefix: true

и рельсы выдает ошибку

Вы попытались определить перечисление с именем "транспортное средство" для модели "Spree::User", но это сгенерирует метод экземпляра "vehicle_car?", который уже определен другим перечислением.

Я пробовал с другим именем, вариантами суффикса и префикса и сделал ack в папке gems. Я предполагаю, что это может быть проблема Zeitwerk, но я не знаю, как это исправить.

Работаю над Rails version: 6


person Rafal Wegrzyniak    schedule 18.02.2020    source источник
comment
где вы создаете это перечисление? Возможно ли, чтобы часть кода, содержащая enum, вызывалась более одного раза?   -  person Pavel Oganesyan    schedule 18.02.2020
comment
в декораторе модели   -  person Rafal Wegrzyniak    schedule 18.02.2020
comment
Вам нужно показать больше своего кода, или люди просто вынуждены гадать.   -  person Beartech    schedule 18.02.2020


Ответы (2)


Это может произойти, если у вас есть метод или столбец с именем vehicle_car, потому что метод перечисления попытается создать для вас помощника с таким именем. Так ли это?

person Caroline Salib    schedule 18.02.2020
comment
Как я уже упоминал в посте, разные имена enum также дают мне ту же ошибку, также я создал каталог проекта ack и каталог gems, он ничего не нашел с этим именем. - person Rafal Wegrzyniak; 19.02.2020

Вы можете указать собственный префикс/суффикс, чтобы он отличался от vehicle_car?.

enum vehicle: { car: 1, bus: 2, other: 3 }, _prefix: :vehicle_type


model_instance.vehicle_type_car!
model_instance.vehicle_type_car? # => false

Для справки

https://api.rubyonrails.org/v5.2.4.1/classes/ActiveRecord/Enum.html

person anurag    schedule 19.02.2020
comment
Я пробовал разные суффиксы и префиксы, также, как я упоминал в сообщении, разные имена перечисления также дают мне ту же ошибку. - person Rafal Wegrzyniak; 19.02.2020
comment
Можете ли вы добавить файл модели в вопрос? - person anurag; 19.02.2020