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

Nat*_*ndo 3 ruby enums ruby-on-rails ruby-on-rails-5

我有一个模型enum:

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


  # .........
end
Run Code Online (Sandbox Code Playgroud)

我想在数据库中将字段标记为"status",而在我的模型中,它应该标题为"my_enum"

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

我知道Rails中"enum"的"_prefix","postfix"属性,这不是我需要的.

max*_*max 5

ActiveRecord :: Enum没有这样的选项.

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

class MyModel < ApplicationRecord
  alias_attribute :my_enum, :status
  enum my_enum: [:status1, :status2, :status3, :status4]
end
Run Code Online (Sandbox Code Playgroud)

我不认为这是一个非常好的主意,因为可能存在意外的错误,因为枚举映射没有指向实际的列名.我不能真正想到这个功能的有效用例,除了被困在一个非常糟糕的遗留数据库之外.