== AddAncestryToMessages: migrating ==========================================
-- add_column(:messages, :ancestry, :string)
rake aborted!
An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: no such table: messages: ALTER TABLE "messages" ADD "ancestry" varchar(255)
私のアプリケーションには、あなたが投稿できるメッセージ(Twitterのようなもの)と私の返信を追加するメッセージがあり、そうするためにancestry gemを使用しています。rake db:migrateを実行しようとすると、このエラーが発生するのはなぜですか?
私schema.rb
ファイル(私はこれはそれがテーブルにあなたがすくいデシベルを実行するたびに作成するために使用するファイルだと思うの私のコード:。!(これが問題になる可能性があるの移行が、私は間違っている可能性)
create_table "messages", :force => true do |t|
t.string "content"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "ancestry"
end
add_index "messages", ["user_id", "created_at", "ancestry"], :name => "index_messages_on_user_id_and_created_at_and_ancestry"
私にとってはうまくいきませんでした。私はadd_indexメソッドからt.string "ancestry"と "ancestry"を取り出して元の状態に戻しました。その後、私はレールを移動してCreateMessagesを実行し、私のためにrbファイルを作成しました。次に、上記のすべてのコードをコピーして上に貼り付けました。これはすべて正しいですか? – BigBoy1337
しばらくお待ちください。 *元の状態に戻す* - 何を意味したのですか?あなたはすでにテーブルを持っていて、それにインデックスを追加したいだけですか?テーブルにインデックスを追加するだけでよいのであれば、 'up' /' change'メソッドは 'add_index ....'のみを含んでいなければなりません。また、 'up'メソッドがある場合、' remove'メソッドに 'remove_index、:name =>" ... "'を記入してください。 – jdoe
@ user1123905、ほぼ正しいです。新しいrbファイルの上に、add_columnとadd_indexを呼び出す必要があります。これは、jdoeが指摘しているように、すでにテーブルがあるからです。 –