【问题标题】:NameError: uninitialized constant ApplicationRecordNameError: 未初始化的常量 ApplicationRecord
【发布时间】:2019-09-15 04:18:39
【问题描述】:

我收到上述错误,但我相信我使用的是 rails 5:

turlingdrome$ rails -v
/Users/brianp/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/railties-5.2.3/lib/rails/app_loader.rb:53: warning: Insecure world writable dir /Users/brianp/work in PATH, mode 040777
Rails 5.2.0

turlingdrome$ rake db:migrate
rake aborted!
NameError: uninitialized constant ApplicationRecord
/Users/brianp/work/online-reporting/app/models/client.rb:1:in `<top (required)>'
/Users/brianp/work/online-reporting/config/routes.rb:7:in `block in <top (required)>'
/Users/brianp/work/online-reporting/config/routes.rb:1:in `<top (required)>'
/Users/brianp/work/online-reporting/config/environment.rb:5:in `<top (required)>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)

我不认为 --trace 有用...但如果需要可以附加它...

【问题讨论】:

  • 看起来您使用的是 rails 5.2。它没有得到 Module ApplicationRecord 这让我相信你需要捆绑安装。

标签: ruby-on-rails ruby-on-rails-5


【解决方案1】:

Rails 5 之前的版本生成的模型继承自 ActiveRecord::Base

# rails g model foo.
class Foo < ActiveRecord::Base

end

Rails 5 引入了ApplicationRecord,它是等效于ApplicationController 的模型。所以在 Rails 5 上会生成以下内容:

# rails g model foo.
class Foo < ApplicationRecord

end

ApplicationRecord 类本身是在您运行rails new 时生成的。

然而,它并没有什么神奇之处——它只是一个根植于约定中的超类。

# app/models/application_record.rb
class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true
end

如果您收到NameError: uninitialized constant ApplicationRecord,您要么升级到 Rails 5 而不创建它,要么错误地删除了它。解决方案就是创建文件。

【讨论】:

    【解决方案2】:

    您有两个选择,要么将app/models/client.rb 类声明更改为:

    class Client < ActiveRecord::Base
    

    或者,您也可以创建一个 app/models/application_record.rb 文件,其中包含以下内容:

    class ApplicationRecord < ActiveRecord::Base
      self.abstract_class = true
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-14
      • 2019-11-11
      • 2017-05-14
      • 2021-09-24
      • 1970-01-01
      • 2015-01-19
      • 2015-10-29
      • 1970-01-01
      相关资源
      最近更新 更多