0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ユーザーと記事を紐付け②

Posted at

データベースのロールバックとマイグレーション

ユーザーの概念がないときに、記事を保存した。

現状の記事は、ユーザーが存在したりしなかったりしている。

ユーザーが存在しない記事はおかしい!!

dbの設定を少し変える👀
そのために、マイグレーションについて深めましょう👏

・dbは、Gitで管理できない!
ファイルの変更をしたから、dbが変わるわけではない!
 マスターという状態で、dbが、αという状態だとする。
その後、Aブランチを作り、マイグレーションファイルを作成し実行したとする。そうするとdbが、α状態から、β状態に変わったとする。
このAブランチをマスター状態に戻すと??
dbは、αではなく、βになっている!

dbは、ファイルの状況で変化するものではなく、マイグレーションを実行することで、変わる💨

なので、現在あるマイグレーションファイルを消しても、dbは消えない!なぜなら、マイグレーションファイルは、設計書(説明書)であるから!
マイグレーションファイルを変更しても、dbは変わらない!!

であれば、βからαに戻したいとする。
その時はどうするのか?

railsでは、元に戻すというロールバックというメソッドがある❗️

説明書の作る順番を見て、元に戻してくれる!

現在、記事を作る、ユーザーを作る、idを付与したの三つのマイグレーションファイルが存在する。

ロールバックするには、

ターミナルを開き、ディレクトリを移動

$rails db:rollback

remove_reference(:articles, :user)
ユーザーというディファレンスを作ったけど、消したよ!という意味

db/schema.rb
をみると、もともとユーザーとあったが、消えている😭

これはロールバックした結果です!

$rails db:migrate

とすると、また先ほどロールバックした、ユーザーが追加される。

現在あるマイグレーション3つとももとにもどしたい!!

$rails db:rollback STEP=3

revertingと書いてあるので、全てもとに戻されている(逆行)のがわかります。
drop_table(:articles)
アーティクルというテーブルをなくしている!!

$Article.first

railsコンソールにて確認すると、データがなくなっているのがわかります😆
no such table: articles
アーティクルというテーブルは、ありませんとなっている。

ただし、ロールバックは、開発環境でしかやらない!
本番環境でロールバックをするとデータが消えてしまうから!!!
なので、基本的に本番環境では、マイグレーションファイルを変更できない!変更するためには、データーを消さなければいけない😭

データベースの設計は、一度リリースすると、変更できない!
ので、データベースの設計は重要!!!!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?