这是我第一次尝试在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'
答案 0 :(得分:0)
首先,您是否希望Books能够在数据库中存储数据?因为迁移中有drop_table行。这意味着您将创建表,然后将其删除。
其次, rake db:migrate是最后一步。您是否在本教程中使用了“rails generate model”命令?或者您是否尝试先迁移? (注意rails generate model也会自动生成一个迁移文件)
您需要先创建名为Books的模型,然后才能运行迁移。您收到的错误是在模型中查找Books类,但找不到。
如果您的模型中已有Books类,请编辑此类以包含该文件。如果我们可以看到您的实际模型,而不仅仅是迁移,它将为我们提供有关为什么rails认为那里没有Books模型的信息。
您的Books模型应该从ActiveRecord :: Base继承,或者从继承自ActiveRecord :: Base的另一个类继承。是这样的吗?