如何用与数据库中的名称不同的名称来命名枚举?

时间:2018-10-24 22:44:12

标签: ruby-on-rails ruby enums ruby-on-rails-5

我有一个带有enum的模型:

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


  # .........
end

我想在数据库中将字段命名为“状态”,而在我的模型中则应将其命名为“ my_enum”

这可能吗?如何在数据库中指定源列的名称?

我知道Rails中“枚举”的“ _prefix”和“ postfix”属性,这不是我所需要的。

1 个答案:

答案 0 :(得分:5)

ActiveRecord :: Enum没有此类选项。

但是您可以使用alias_attribute创建别名,然后为别名创建一个枚举映射:

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

我认为这不是一个好主意,因为枚举映射未指向实际的列名,可能会出现意外错误。除了卡在一个非常糟糕的旧数据库之外,我真的不能想到此功能的有效用例。