我在Rails中访问视图层的枚举值时遇到了麻烦。
我有一个名为Rule
的ActiveRecord模型,其中定义了一个enum operation
:
class Rule < ActiveRecord::Base
enum operation: [:says, :contains]
end
我已经传递了一个规则给我的视图,我正试图访问操作字段。对象返回nil
,尽管它有一个值。
= rule.inspect #=> #<Rule id: 2, operation: 1>
= rule.operation #=> Nil
= rule.operation.class #=> NilClass
当我试图从控制台中访问操作字段时,它工作得很好。
rule.inspect #=> #<Rule id: 2, operation: 1>
rule.operation #=> "contains"
我验证了operation
不是ruby/rails关键字。有什么技巧能让枚举显示在视图层吗?
提前感谢!
这个问题是在我破坏了定义枚举的哈希值时引起的。我这样做是为了给选择标签提供选项。
@operations = RowRule.operations
# alter @operations here
我通过克隆哈希来解决这个问题:
@rule_operations = RowRule.operations.clone
# alter @operations here