だから私はルビープロジェクトを始めたばかりで、レールにはまったく慣れていません。アプリで 2 つのモデルを作成したいと考えています。Words
(「自転車」など) およびWordtypes
(「名詞」など)。まず、足場を使用して Word モデルを生成します。
$ rails g scaffold Word word_name:string word_type_name:string
$ rake db:migrate
次に、単語型参照を含む別のデータベースと通信できるように、a を使用しない方がよい場合と、代わりにword_type_name
a を使用する方がよい場合があることを思い出します。word_type_id
.
だから私は実行します:
$ 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
ここで何が起こっているか知っている人はいますか?