首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:书籍不是一个类

问TypeError:书籍不是一个类
EN

Stack Overflow用户
提问于 2015-02-27 19:37:03
回答 1查看 2.2K关注 0票数 2

这是我第一次尝试制作rails项目,而且我还在使用迁移命令。

我遵循了本教程教程。当我尝试使用迁移:rake db:migrate时,我得到了以下错误:

代码语言:javascript
复制
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)

但文件中说,图书是一个类:

代码语言:javascript
复制
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时,什么都没有发生(我想它成功了吗?),在网页上我得到了这样的消息:

代码语言:javascript
复制
Couldn't find Book with 'id'=all

关于文件book_controller

代码语言:javascript
复制
class BookController < ApplicationController

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

我还试图将Book.find更改为create_Book.find --我得到了以下错误:

代码语言:javascript
复制
undefined local variable or method `create_Book'
EN

回答 1

Stack Overflow用户

发布于 2015-02-27 20:47:34

首先,您想要图书能够在数据库中存储数据吗?因为在迁移中有一个drop_table行。这意味着您将创建该表,然后删除它。

其次,rake:是迁移的最后一步。在本教程中,您使用了“rails生成模型”命令吗?还是您试图先运行迁移?(注: rails生成模型还将自动为您生成一个迁移文件)

首先要创建一个名为Books的模型,然后可以运行迁移。您收到的错误是在您的模型中查找图书类,但找不到。

如果您已经在您的模型中有一个Books类,请编辑此类以包含该文件。如果我们能够看到您的实际模型,而不仅仅是迁移,它将为我们提供关于为什么rails认为那里没有图书模型的信息。

您的图书模型应该从ActiveRecord::Base继承,或者从从ActiveRecord::Base继承的另一个类继承。是这样吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28772959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档