[開発環境]
cloud9, rails5.1.6
元々facebookでの認証機能を実装中に色々エラーが出たので、
ある記事を参考に一旦rails db:migrate:resets
を実行しrails server
を実行した所、次のエラーが出ました。
↓
ActiveRecord::PendingMigrationError Migrations are pending. To resolve this issue, run: bin/rails db:migrate RAILS_ENV=development
エラー文の通りbin/rails db:migrate RAILS_ENV=development
を実行すると下記のエラー文が出ました。
↓
== 20200208142505 RenamePostIdColumnToComments: migrating ===================== -- rename_column(:comments, :post_id, :micropost_id) rails aborted! StandardError: An error has occurred, this and all later migrations canceled: No such column: comments.post_id (以下省略)
この結果から、以前Commentモデルを作成する時に、画像保存用のMicropostと関連付けをする為に
Commentモデルにmicropost_idを作成したかったんですが、間違ってpost_idカラムを作成したので、
その名前を変更する為に新たに作成したmigrationファイルでした。
その後にCommentモデルのmigrationファイルの内容自体を手動で変えたような気がします。
(大分前なので、あまり覚えていません) 現在↓
上記のエラー文を受け、Commentモデルの後に作った他のmigrationファイルは反映されているのか気になったので、rails db:migrate:status
を実行下みたら、3つ反映されていませんでした。
[rails db:version
で確認もしています。→Current version: 20200208135438 ]
Status Migration ID Migration Name -------------------------------------------------- up 20200204125235 Devise create users up 20200204134552 Add username to users up 20200205045254 Create relationships up 20200205145538 Add avatar to users up 20200206131444 Create microposts up 20200208135438 Create comments down 20200208142505 Rename post id column to comments down 20200210064310 Create favorites down 20200218065956 Add omniauth to users
この後に,rails console
でComment.columns.map(&:name)
を実行し、Commentテーブルのカラムを確認。
→["id", "content", "user_id", "micropost_id", "created_at", "updated_at"]
micropost_idになっていました。
Favorite.columns.map(&:name)
を実行すると、Favoriteテーブルは見つからないという結果。
→ActiveRecord::StatementInvalid: Could not find table 'favorites'
ですが、schema.rbを見ると、Favoriteテーブルは存在します。
create_table "favorites", force: :cascade do |t| t.integer "user_id" t.integer "micropost_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.index ["micropost_id"], name: "index_favorites_on_micropost_id" t.index ["user_id", "micropost_id"], name: "index_favorites_on_user_id_and_micropost_id", unique: true t.index ["user_id"], name: "index_favorites_on_user_id" end
これらはどうなっているのでしょうか。
Rename post id column to commentsというmigrationファイルを手動で消去して、
raile db:migrateを実行しようと思っているのですが、何かまずい気がします。
何かご教授頂けたら幸いです。
回答1件
あなたの回答
tips
プレビュー