Rails 4.1是枚举功能吗?

Rya*_*Mes 3 enums ruby-on-rails

我只是想尝试使用新的rails enum做最简单的事情(我知道它还处于测试阶段)

无论如何,我正在尝试使用rails控制台来拉取对象上的所有枚举(因为它不能在代码中工作),例如

class Interaction < ActiveRecord::Base
  enum outcome_type: { hot: 1, neutral: 2, cold: 3 }
end
Run Code Online (Sandbox Code Playgroud)

然后我运行rails控制台并尝试Interaction.outcome_types

根据文档,这应该是相当简单和直接的.

http://edgeapi.rubyonrails.org/classes/ActiveRecord/Enum.html

我只得到错误:/

NoMethodError: undefined method `outcome_types' for #<Class:0x007fb5e595ebb8>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

yer*_*ips 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 }
Run Code Online (Sandbox Code Playgroud)

所以我建议更新到边缘Rails,或者在你的情况下使用,Interaction::OUTCOME_TYPE而不是Interaction.outcome_types.它适用于我,使用4.1.0.beta1的新测试应用程序并实现您的确切模型代码.