1
1

マイグレーションファイルを作成してもschema.rbファイルが更新されない時の対応

Last updated at Posted at 2024-08-17

初めまして2litrewtと申します。
ruby on railsの学習中に起きた問題とその解決法について説明していきます。

マイグレーションファイルを作成してもschema.rbファイルが更新されない時の対応

  
学習中にマイグレーションファイルを作成しました。
(dockerを利用しているので文頭にdocker compose run webをつけています。)

docker compose run web rails generate migration CreatePosts title:string body:text user:references

実行はできたのですがschema.rbファイルには生成したテーブルの情報は記載されず...

schema.rb
ActiveRecord::Schema[7.0].define(version: 2024_08_17_090454) do

  enable_extension "plpgsql"

  create_table "users", force: :cascade do |t|
    t.string "email", null: false
    t.string "crypted_password"
    t.string "salt"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["email"], name: "index_users_on_email", unique: true
  end
end

  
一度マイグレーションの適用状況を確認します

docker compose run web rails db:migrate:status


database: sample_app_development

Status   Migration ID    Migration Name
--------------------------------------------------
   up     20240815135115  Sorcery core
  down    20240817090454  Create posts

どうやらdownになっていたようです。
これを下記コマンドupにします。

docker compose run web rails db:migrate:redo

無事記載されました!!

schema.rb
ActiveRecord::Schema[7.0].define(version: 2024_08_17_090454) do

  enable_extension "plpgsql"

  create_table "posts", force: :cascade do |t|
    t.string "title"
    t.text "body"
    t.bigint "user_id", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["user_id"], name: "index_posts_on_user_id"
  end

  create_table "users", force: :cascade do |t|
    t.string "email", null: false
    t.string "crypted_password"
    t.string "salt"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["email"], name: "index_users_on_email", unique: true
  end

  add_foreign_key "posts", "users"
end

まとめ

一度マイグレーションの適用状況を確認するのが重要ですね。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1