ローカル開発環境のModelデータをコンソールで書き換える(Rails)

ローカル開発環境で登録されたデータを書き換えたかったので備忘録として書く。

変更したいModelのテーブルを見る

  • DBを操作するためにコンソールを起動する
% rails dbconsole

するとプロンプトがかわりSQLを叩けるようになる

development=#
  • SQLを叩いて見たいModelとカラムを出す

今回はproductsテーブル(モデル)のcreated_atupdated_atを変更したいので
idを含めてテーブルを出力する

development=# select id,created_at,updated_at from products;
     id     |         created_at         |         updated_at
------------+----------------------------+----------------------------
 1033498682 | 2021-02-11 21:19:28.377342 | 2021-02-19 05:16:38.259334
 1033498689 | 2021-02-16 06:02:34.481795 | 2021-02-19 06:21:35.591053
 1033498684 | 2021-02-15 10:05:29.429805 | 2021-02-19 07:55:34.359815
 1033498703 | 2021-02-22 05:19:27.567242 | 2021-02-22 05:19:27.729664
 1033498704 | 2021-02-22 05:26:57.909896 | 2021-02-22 05:26:57.922758
 1033498681 | 2021-02-09 01:04:37.932581 | 2021-02-09 01:04:37.932581
 1033498649 | 2021-01-28 08:00:30.830522 | 2021-02-14 06:56:01.74118
 1033498698 | 2021-02-16 06:19:37.667765 | 2021-02-17 05:04:01.551797
 1033498696 | 2021-02-16 06:19:19.166006 | 2021-02-17 05:04:04.504286
 1033498695 | 2021-02-16 06:19:04.007454 | 2021-02-17 05:05:13.466765
 1033498694 | 2021-02-16 06:18:18.464509 | 2021-02-17 05:05:14.955893
 1033498693 | 2021-02-16 06:18:06.320066 | 2021-02-17 05:05:15.903362
 1033498691 | 2021-02-10 21:03:00.05267  | 2021-02-10 21:03:00.05267
 1033498690 | 2021-02-13 21:03:00.05267  | 2021-02-13 21:03:00.05267

この表を確認しながら次の作業で変更していく

DBのデータを変更する

続いて

  • データを変更するためにRailsのコンソールに切り替える
% rails console

叩くと以下のようにirbが起動する

Loading development environment (Rails 6.0.3.4)
irb(main):001:0>
  • 変更したいレコードをローカル変数に格納する
    findメソッドで先ほどのテーブルのid(変更したいレコードのid)を引数に入れる
irb(main):001:0> product = Product.find(1033498682)
=> #<Product id: 1033498682, practice_id: 363506445, user_id: 253826460, body: "fdafdadsf", created_at: "2021-02-11 21:19:28", updated_at: "2021-02-19 05:16:38", wip: false, published_at: "2021-02-11 21:19:28", checker_id: 679998234>
  • created_atフィールドとupdated_atフィールドを変更する
    updateメソッドで変更したい値を指定して変更する
irb(main):002:0> product.update(created_at: "2021-02-10 21:19:28.377342", updated_at: "2021-02-10 21:19:28.377342")
=> true

trueで変更完了 - テーブルを確認すると変更されているはず

development=# select id,created_at,updated_at from products;
     id     |         created_at         |         updated_at
------------+----------------------------+----------------------------
 1033498682 | 2021-02-10 21:19:28.377342 | 2021-02-10 05:16:38.259334
 1033498689 | 2021-02-16 06:02:34.481795 | 2021-02-19 06:21:35.591053
 1033498684 | 2021-02-15 10:05:29.429805 | 2021-02-19 07:55:34.359815
 1033498703 | 2021-02-22 05:19:27.567242 | 2021-02-22 05:19:27.729664
 1033498704 | 2021-02-22 05:26:57.909896 | 2021-02-22 05:26:57.922758
 1033498681 | 2021-02-09 01:04:37.932581 | 2021-02-09 01:04:37.932581
 1033498649 | 2021-01-28 08:00:30.830522 | 2021-02-14 06:56:01.74118
 1033498698 | 2021-02-16 06:19:37.667765 | 2021-02-17 05:04:01.551797
 1033498696 | 2021-02-16 06:19:19.166006 | 2021-02-17 05:04:04.504286
 1033498695 | 2021-02-16 06:19:04.007454 | 2021-02-17 05:05:13.466765
 1033498694 | 2021-02-16 06:18:18.464509 | 2021-02-17 05:05:14.955893
 1033498693 | 2021-02-16 06:18:06.320066 | 2021-02-17 05:05:15.903362
 1033498691 | 2021-02-10 21:03:00.05267  | 2021-02-10 21:03:00.05267
 1033498690 | 2021-02-13 21:03:00.05267  | 2021-02-13 21:03:00.05267