【发布时间】:2015-04-30 15:08:19
【问题描述】:
这是我第一次尝试在 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'
【问题讨论】:
-
迁移的名称与模型的名称相同 - 可能会引起一些混淆 - 尝试
class CreateBooks < ActiveRecord::Migration -
不要忘记将文件重命名为
create_books.rb。另外,请记住,这可以使用生成器为您完成。更多信息在这里:edgeguides.rubyonrails.org/…
标签: ruby-on-rails ruby database-migration