Rails 4.2管理具有相同枚举值的多个列

时间:2016-06-28 12:19:13

标签: ruby-on-rails-4 enums

我有一个用例,我希望有2列具有相同的枚举数组。下面是我试图实现的示例代码。最初使用以下代码获得错误,然后添加后缀广告前缀。

class Sample
  enum status1: {initiated: 1, ringing: 2}, _suffix: true
  enum status2: {initiated: 1, ringing: 2}, _prefix: :stat2
end 

现在,当我尝试从rails控制台访问模型以使用下面的代码将值分配给status1或status2时,我收到错误

s = Sample.last

NoMethodError:未定义的方法`each_with_index'表示true:TrueClass

所以在这里我希望有多个列具有相同的枚举值,并且能够为它们赋值并保存。

1 个答案:

答案 0 :(得分:1)

Rails 4.2不支持使用_prefix和_suffix。这是Rails 5引入的一项功能。您可以看到here对引入该功能的rails master分支的提交。

你要么必须实现enum的新rails 5版本,要么只需手动添加前缀或后缀以防止名称冲突。 Rails基于它声明的枚举值为模型生成方法,这就是为什么两个具有相同名称的枚举值不能具有相同名称的原因。