#line :: 0x007f099c303390>的未定义方法`enum'

neo*_*ode 5 ruby ruby-on-rails

我在rails中使用并收到以下错误:

undefined method `enum' for #<Class:0x007f03202a1190
Run Code Online (Sandbox Code Playgroud)

模型

class Location < ActiveRecord::Base

   enum status: [ :current, :preffered ]

end
Run Code Online (Sandbox Code Playgroud)

我该如何删除此错误.

Alv*_*Lee 8

ActiveRecord::Enum只是在Rails中引入commit db41eb8a,到目前为止,这个提交只发布了Rails标签v4.1.0.beta1.

你正在使用的当前Rails gem可能还没有这个提交,因此没有实现的代码enum.

要查看您拥有的Rails gem版本,请运行:

bundle show rails
Run Code Online (Sandbox Code Playgroud)

我只是跑了bundle update然后bundle show rails,我正在展示:

[PATH TO YOUR GEMS]/rails-4.0.2
Run Code Online (Sandbox Code Playgroud)

此版本的gem不包含代码enum.你可以看到这个比较什么是v4.0.2什么是v4.0.1.beta1.如果您单击"文件已更改"然后在页面中搜索enum.rb,您将看到这是完全新添加的代码.

如果您想确保获得新标记的Rails版本,可以修改Gemfile,以便包含rails的行如下所示:

gem 'rails', :git => 'git://github.com/rails/rails.git', :tag => 'v4.1.0.beta1'
Run Code Online (Sandbox Code Playgroud)

做完之后bundle update,你可以看到bundle show rails你有以下rails gem:

[PATH TO YOUR GEMS]/rails-f706d5f945c5
Run Code Online (Sandbox Code Playgroud)

f706d5f945c5是标记为发布的提交v4.1.0.beta1.

获得Rails gem的最新版本后,您应该可以访问此enum功能.