我在rails中使用并收到以下错误:
undefined method `enum' for #<Class:0x007f03202a1190
模型
class Location < ActiveRecord::Base
enum status: [ :current, :preffered ]
end
如何删除此错误。
答案 0 :(得分:8)
ActiveRecord::Enum
仅在commit db41eb8a
引入了Rails,到目前为止,此提交仅使用Rails标记v4.1.0.beta1
发布。
您正在使用的当前Rails gem可能尚未进行此提交,因此没有实现enum
的代码。
要查看您拥有的Rails gem版本,请运行:
bundle show rails
我刚刚运行bundle update
然后bundle show rails
,我正在展示:
[PATH TO YOUR GEMS]/rails-4.0.2
此版本的gem不包含enum
的代码。您可以通过comparing what is in v4.0.2
with what is in v4.0.1.beta1
查看此信息。如果您点击“文件已更改”,然后在enum.rb
页面中进行搜索,您会看到这是完全新添加的代码。
如果您想确保获得新标记的Rails版本,可以修改Gemfile,以便包含rails的行如下所示:
gem 'rails', :git => 'git://github.com/rails/rails.git', :tag => 'v4.1.0.beta1'
执行bundle update
之后,您可以通过bundle show rails
看到您拥有以下rails gem:
[PATH TO YOUR GEMS]/rails-f706d5f945c5
f706d5f945c5
是为发布v4.1.0.beta1
标记的提交。
获得Rails gem的最新版本后,您应该可以访问此enum
功能。
答案 1 :(得分:3)