rails 控制台中的未初始化常量 Post,遵循教程
Uninitialized constant Post in rails console, following tutorial
所以我正在学习本教程,并且我已经三次检查我到目前为止所做的一切都是正确的。教程:https://www.youtube.com/watch?v=0OzDgi0zqJU
在视频的开头,他要我启动 rails 控制台并键入 "Post.all"。当他的终端显示一个空数组时,我收到此错误(如下)。
EIERs-MBP:training eier$ rails c
Running via Spring preloader in process 75415
Loading development environment (Rails 5.0.1)
2.3.0 :001 > Post.all
NameError: uninitialized constant Post
from (irb):1
from /Users/eier/.rvm/gems/ruby-2.3.0@global/gems/railties-5.0.1/lib/rails/commands/console.rb:65:in `start'
from /Users/eier/.rvm/gems/ruby-2.3.0@global/gems/railties-5.0.1/lib/rails/commands/console_helper.rb:9:in `start'
from /Users/eier/.rvm/gems/ruby-2.3.0@global/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:78:in `console'
from /Users/eier/.rvm/gems/ruby-2.3.0@global/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
from /Users/eier/.rvm/gems/ruby-2.3.0@global/gems/railties-5.0.1/lib/rails/commands.rb:18:in `<top (required)>'
from /Users/eier/Documents/Workspace/rails/training/bin/rails:9:in `<top (required)>'
from /Users/eier/.rvm/rubies/ruby-2.3.0/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Users/eier/.rvm/rubies/ruby-2.3.0/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from -e:1:in `<main>'
我到处寻找这可能是什么的答案,我不知道是不是因为我使用的 rails 版本。这是一个非常简单的教程,所以真的很令人沮丧。我们假设在 rails 控制台中使用 Post.create(title: "first post", content: "test") 创建内容,但我在输入 "Post.all".
这是 posts_controller.rb 文件:
class PostsController < ApplicationController
def index
end
end
这也是他的文件以及我们创建的所有其他文件(例如 index.html.erb 和路由)的样子。如果我需要提供更多信息,请告诉我。
你的posts_controller.rb与此无关。检查您的 app/models/post.rb 是否定义了
class Post < ApplicationRecord # sometimes "< ActiveRecord::Base" instead
end
当您键入 Post.all
时,ruby 会尝试查找名为 Post
的 class——您的模型——并对其调用 all
方法。如果它在错误中显示 uninitialized constant Post
,那么您的 post 模型不能被定义。
首先使用命令创建模型Post
,
rails generate model Post title:string text:text
这会在 db/migrate
中创建 app/models/post.rb
和一个迁移文件
现在,运行 迁移,如果您已经拥有数据库。
rails db:migrate
现在,table 已创建。
现在开始rails console
/rails c
Post.all
所以我正在学习本教程,并且我已经三次检查我到目前为止所做的一切都是正确的。教程:https://www.youtube.com/watch?v=0OzDgi0zqJU
在视频的开头,他要我启动 rails 控制台并键入 "Post.all"。当他的终端显示一个空数组时,我收到此错误(如下)。
EIERs-MBP:training eier$ rails c
Running via Spring preloader in process 75415
Loading development environment (Rails 5.0.1)
2.3.0 :001 > Post.all
NameError: uninitialized constant Post
from (irb):1
from /Users/eier/.rvm/gems/ruby-2.3.0@global/gems/railties-5.0.1/lib/rails/commands/console.rb:65:in `start'
from /Users/eier/.rvm/gems/ruby-2.3.0@global/gems/railties-5.0.1/lib/rails/commands/console_helper.rb:9:in `start'
from /Users/eier/.rvm/gems/ruby-2.3.0@global/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:78:in `console'
from /Users/eier/.rvm/gems/ruby-2.3.0@global/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
from /Users/eier/.rvm/gems/ruby-2.3.0@global/gems/railties-5.0.1/lib/rails/commands.rb:18:in `<top (required)>'
from /Users/eier/Documents/Workspace/rails/training/bin/rails:9:in `<top (required)>'
from /Users/eier/.rvm/rubies/ruby-2.3.0/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Users/eier/.rvm/rubies/ruby-2.3.0/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from -e:1:in `<main>'
我到处寻找这可能是什么的答案,我不知道是不是因为我使用的 rails 版本。这是一个非常简单的教程,所以真的很令人沮丧。我们假设在 rails 控制台中使用 Post.create(title: "first post", content: "test") 创建内容,但我在输入 "Post.all".
这是 posts_controller.rb 文件:
class PostsController < ApplicationController
def index
end
end
这也是他的文件以及我们创建的所有其他文件(例如 index.html.erb 和路由)的样子。如果我需要提供更多信息,请告诉我。
你的posts_controller.rb与此无关。检查您的 app/models/post.rb 是否定义了
class Post < ApplicationRecord # sometimes "< ActiveRecord::Base" instead
end
当您键入 Post.all
时,ruby 会尝试查找名为 Post
的 class——您的模型——并对其调用 all
方法。如果它在错误中显示 uninitialized constant Post
,那么您的 post 模型不能被定义。
首先使用命令创建模型Post
,
rails generate model Post title:string text:text
这会在 db/migrate
app/models/post.rb
和一个迁移文件
现在,运行 迁移,如果您已经拥有数据库。
rails db:migrate
现在,table 已创建。
现在开始rails console
/rails c
Post.all