ruby-on-rails - #<Class :0x007f099c303390> 的未定义方法 `enum'

标签 ruby-on-rails ruby

我在 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/

相关文章:

ruby - 按值降序排列散列,然后按升序键入 ruby

ruby-on-rails - 在我的应用程序中为 Mongoid 创建索引?

ruby-on-rails - 事件记录 : Select max of limit

ruby-on-rails - Rails : belongs_to & accepts_nested_attributes_for, 多态

ruby - 分析 Ruby 代码

ruby-on-rails - Rails has_many 通过带有附加属性的表单

Ruby 中类似 Python 的 "as"关键字(用于命名空间)

ruby-on-rails - 测试 'save' 函数在传递无效数据时失败。 ( ruby Rspec)

ruby-on-rails - 使用 hmt 关系批量插入新模型实例

ruby-on-rails - 允许第三方应用程序的架构