Как назвать enum с именем, отличным от его имени в базе данных? - PullRequest
0 голосов
/ 25 октября 2018

У меня есть модель с enum:

class MyModel < ApplicationRecord
  enum my_enum: [:status1, :status2, :status3, :status4]


  # .........
end

Я хочу, чтобы поле в базе данных было названо «status», тогда как в моей модели оно должно быть «my_enum»

Возможно ли это?Как указать имя исходного столбца в базе данных?

Мне известны свойства "_prefix", "postfix" для enum в Rails, и это не то, что мне нужно.

1 Ответ

0 голосов
/ 25 октября 2018

Для ActiveRecord :: Enum такой опции нет.

Но вы можете использовать alias_attribute, чтобы создать псевдоним, а затем создать сопоставление перечисления для псевдонима:

class MyModel < ApplicationRecord
  alias_attribute :my_enum, :status
  enum my_enum: [:status1, :status2, :status3, :status4]
end

Я не думаю, что это очень хорошая идея, поскольку могут быть непредвиденные ошибки, поскольку отображение enum не указывает на фактическое имя столбца.Я не могу придумать действительного варианта использования этой функции, за исключением того, что застрял с действительно плохим наследием БД.

...