2014-01-19 73 views
3

我要瘋了只是做最簡單的事情,新的軌道枚舉(我知道它仍處於測試階段)Rails 4.1是枚舉功能的工作?

無論如何,我想使用的鐵軌控制檯拉對象所有的枚舉(因爲它是不在代碼中工作)例如

class Interaction < ActiveRecord::Base 
    enum outcome_type: { hot: 1, neutral: 2, cold: 3 } 
end 

然後我運行軌道控制檯,並嘗試Interaction.outcome_types

根據文檔,這應該是非常簡單和直接的。

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

我只得到錯誤:/

NoMethodError: undefined method `outcome_types' for #<Class:0x007fb5e595ebb8> 

任何想法?

+0

你是怎麼用這個'enum'調用的? –

+0

Interaction.outcome_types –

回答

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的全新測試應用程序並實現您的確切型號代碼。