我只是想尝试使用新的rails enum做最简单的事情(我知道它仍处于测试阶段)我很疯狂
无论如何,我试图使用rails控制台来拉取对象上的所有枚举(因为它不能在代码中工作),例如。
class Interaction < ActiveRecord::Base
enum outcome_type: { hot: 1, neutral: 2, cold: 3 }
end
然后我运行rails控制台并尝试Interaction.outcome_types
根据文件,这应该是相当简单和直接的。
http://edgeapi.rubyonrails.org/classes/ActiveRecord/Enum.html
我只得到错误:/
NoMethodError: undefined method `outcome_types' for #<Class:0x007fb5e595ebb8>
有什么想法吗?
答案 0 :(得分:5)
这是因为您引用的文档是边缘Rails,并且您可能使用Rails 4.1.0.beta1
,这是一个beta版本,而不是边缘。
4.1.0.beta1
于2013年12月18日发布(https://rubygems.org/gems/rails)。使您尝试使用的代码的提交工作从2014年1月14日开始:https://github.com/rails/rails/commit/b242b2dbe75f0b5e86e2ce9ef7c2c5ee96e17862
它还有在记录此提交之前有效的方法:
+ Before:
+
+ Conversation::STATUS # => { "active" => 0, "archived" => 1 }
+
+ After:
+
+ Conversation.statuses # => { "active" => 0, "archived" => 1 }
因此,我建议您更新到边缘Rails,或者在您的情况下使用Interaction::OUTCOME_TYPE
而不是Interaction.outcome_types
。它适用于我,使用4.1.0.beta1的新测试应用程序并实现您的确切型号代码。