所以我刚刚开始了一个 ruby 项目,我对 Rails 很陌生。我想在我的应用程序中创建两个模型;Words
(如“自行车”)和Wordtypes
(如“名词”)。我首先通过脚手架生成 Word 模型。
$ rails g scaffold Word word_name:string word_type_name:string
$ rake db:migrate
然后我提醒自己,不使用 aword_type_name
可能会更好,而使用 a 可能会更好,word_type_id
这样我就可以与另一个包含 wordtype 引用的数据库进行通信。.
所以我然后运行:
$ rails destroy scaffold Word
$ rake db:migrate
我重新创造了整个事情:
$ rails g scaffold Word word_type_id:integer word_id:integer word_name:string
$ rake db:migrate
我想检查一切是否正常,所以我运行 rails 控制台:
$ rails console
Loading development environment (Rails 3.2.11)
>> Word
=> Word(id: integer, word_name: string, word_type: string, created_at: datetime, updated_at: datetime)
为什么旧模型还在这里?我是否忘记撤消过去的某些事情?
编辑/更新
我已经阅读了更多内容,似乎我忘了重置数据库。所以现在我使用:
$ rake db:reset
缺点是现在当我尝试迁移所有内容时出现此错误:
$ rake db:migrate
== CreateWords: migrating ====================================================
-- create_table(:words)
rake aborted!
An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: table "words" already exists: CREATE TABLE "words" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "word_type_id" integer, "word_id" integer, "word_name" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) /Library/Ruby/Gems/1.8/gems/sqlite3-1.3.8/lib/sqlite3/database.rb:91:in `initialize'
即使我阅读了一些应该删除所有旧表的文档( http://guides.rubyonrails.org/migrations.html#resetting-the-database) 。rake db:reset
有人知道这里发生了什么吗?