- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这是我第一次尝试在 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/
我是一名优秀的程序员,十分优秀!