[英]NameError: uninitialized constant ApplicationRecord
I'm getting the above error, but I believe that I using rails 5:我收到上述错误,但我相信我使用的是 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)
I don't think that the --trace is useful... but can attach it if desired...我认为 --trace 没有用...但如果需要可以附加它...
Prior to version 5 Rails generated models that inherited from ActiveRecord::Base
.在版本 5 之前,Rails 生成的模型继承自
ActiveRecord::Base
。
# rails g model foo.
class Foo < ActiveRecord::Base
end
Rails 5 introduced ApplicationRecord
which is the model equivalent to ApplicationController
. Rails 5 引入了
ApplicationRecord
,它是等效于ApplicationController
的模型。 So on Rails 5 the following is generated:因此在 Rails 5 上生成以下内容:
# rails g model foo.
class Foo < ApplicationRecord
end
The ApplicationRecord class itself is generated when you run rails new
. ApplicationRecord 类本身是在您运行
rails new
时生成的。
However there is nothing magical about it - its just a superclass thats engrained in the conventions.然而,它并没有什么神奇之处——它只是一个根植于惯例中的超类。
# app/models/application_record.rb
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
If you are getting NameError: uninitialized constant ApplicationRecord
you either upgraded to Rails 5 without creating it or deleted it by mistake.如果您收到
NameError: uninitialized constant ApplicationRecord
您要么在未创建的情况下升级到 Rails 5,要么错误地将其删除。 The solution is simply to create the file.解决方案只是创建文件。
You have two options, you either change app/models/client.rb
class declaration to:您有两个选择,您可以将
app/models/client.rb
类声明更改为:
class Client < ActiveRecord::Base
Or alternatively you can create a app/models/application_record.rb
file with the contents:或者,您可以创建一个包含以下内容的
app/models/application_record.rb
文件:
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.