我在 rails 中使用并收到以下错误:
undefined method `enum' for #<Class:0x007f03202a1190
模型
class Location < ActiveRecord::Base
enum status: [ :current, :preffered ]
end
我怎样才能消除这个错误。
最佳答案
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
功能。
关于ruby-on-rails - #<Class :0x007f099c303390> 的未定义方法 `enum',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21701041/