Rails:在视图层中访问枚举值

Rails: Accessing Enum Value in View Layer

我无法从Rails的视图层访问枚举值。

我有一个名为Rule的ActiveRecord模型,其中定义了一个枚举operation

1
2
3
class Rule < ActiveRecord::Base
  enum operation: [:says, :contains]
end

我已将规则传递给我的视图,并且我正在尝试访问操作字段。尽管具有值,该对象仍返回nil

1
2
3
= rule.inspect             #=> #<Rule id: 2, operation: 1>
= rule.operation           #=> Nil
= rule.operation.class     #=> NilClass

当我尝试从控制台访问"操作"字段时,它工作正常。

1
2
rule.inspect             #=> #<Rule id: 2, operation: 1>
rule.operation           #=>"contains"

我验证了operation不是ruby / rails关键字。使枚举出现在视图层中是否有一些技巧?

预先感谢!


此问题是由于我破坏定义枚举的哈希值引起的。我这样做是为了为select标签提供选项。

1
2
@operations = RowRule.operations
# alter @operations here

我通过克隆哈希解决了这个问题:

1
2
@rule_operations = RowRule.operations.clone
# alter @operations here