gpt4 book ai didi

ruby-on-rails - 类型错误 : Books is not a class

转载 作者:太空宇宙 更新时间:2023-11-03 16:48:10 25 4
gpt4 key购买 nike

这是我第一次尝试在 Rails 项目上制作 ruby​​,我对 migrate 命令很费劲。

我遵循了本教程 tutorial .当我尝试使用迁移时:rake db:migrate 我收到此错误:

rake aborted!
TypeError: Books is not a class
/home/dudi/tutorials/books/db/migrate/20150227191301_books.rb:1:in `<top (required)>'
TypeError: Books is not a class
/home/dudi/tutorials/books/db/migrate/20150227191301_books.rb:1:in `<top (required)>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

但是文件说 Books 是一个类:

class Books < ActiveRecord::Migration
def self.up
create_table :books do |t|
t.column :title, :string, :limit => 32, :null => false
t.column :price, :float
t.column :subject_id, :integer
t.column :description, :text
t.column :created_at, :timestamp
end
end

def self.down
drop_table :books
end
end

我在这里做错了什么?


编辑:

我尝试将 class Book 更改为 class create_Book 并将文件名更改为 create_Book。当我输入 rake db:migrate 时,没有任何反应(我猜它起作用了?),在网页上我收到了这条消息:

Couldn't find Book with 'id'=all

在文件 book_controller 上:

class BookController < ApplicationController

#printout of all the books in the database
def list
@books = Book.find(:all)
end
end

我还尝试将 Book.find 更改为 create_Book.find 我遇到了这个错误:

undefined local variable or method `create_Book'

最佳答案

首先,您是否希望 Books 能够将数据存储在数据库中?因为您在该迁移中有一个 drop_table 行。这意味着您将创建表,然后将其删除。

其次,rake db:migrate 是最后一步。您是否在本教程中使用了命令“rails generate model”?或者您是否尝试先运行迁移? (注意 rails generate model 也会自动为你生成迁移文件)

您需要先创建一个名为 Books 的模型,然后才能运行迁移。您收到的错误是在您的模型中寻找 Books 类,但找不到。

如果您的模型中已经有 Books 类,请编辑它以包含该文件。如果我们可以看到您的实际模型,而不仅仅是迁移,这将为我们提供有关为什么 Rails 认为那里没有 Books 模型的信息。

您的 Books 模型应该继承自 ActiveRecord::Base 或继承自另一个继承自 ActiveRecord::Base 的类。是这样吗?

关于ruby-on-rails - 类型错误 : Books is not a class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28772959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com