【问题标题】:Rails 4.1 is enum functionality working?Rails 4.1 枚举功能有效吗?
【发布时间】:2014-01-19 15:19:54
【问题描述】:

我只是想用新的 rails 枚举做最简单的事情(我知道它仍处于测试阶段)

无论如何,我正在尝试使用 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>

有什么想法吗?

【问题讨论】:

  • 你是如何调用enum的?
  • Interaction.outcome_types

标签: ruby-on-rails enums


【解决方案1】:

这是因为您参考的文档是 edge Rails,您可能使用的是 Rails 4.1.0.beta1,它是 beta 版本,而不是 edge。

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 }

所以我建议要么更新到 Edge Rails,要么在你的情况下使用 Interaction::OUTCOME_TYPE 而不是 Interaction.outcome_types。它适用于我,带有一个使用 4.1.0.beta1 并实现您的确切模型代码的全新测试应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多