概要
Migrationファイルを追加するときに、必ずつけてほしいコマンドを紹介します。
after
こちらのコマンドは、どのカラムの後に追記するかを指定することができます。
初期生成時は、気にする必要はありません。
create_table :posts do |t| t.string :title, null: false t.string :content, null: false t.timestamps t.datetime :discarded_at
この時に作成されるカラムは下記になります。
title content created_at updated_at
この状態で、新しくカラムを追加したいとき
add_colum: :posts, :status, :text
だけを追加すると、
title content created_at updated_at status
のようなテーブルとなってしまいます。基本的にcreated_at
やupdated_at
の後ろに追加することは好ましくありません。(良いですが、SQLが見にくくなります。。。)
そんなときは、
add_colum: :posts, :status, :text, after: title
とすることで、
title status content created_at updated_at
のように追加場所を指定できます。
もし、複数のカラムを場所を指定して追加したい場合は、
add_colum: :posts, :status, :text, after: title add_colum: :posts, tag, :text, after: :status add_colum: :posts, :summary, :text, after: :tag
のようにすることで
title status tag summary content created_at updated_at
のようにカラムを追加することができます。
comment
こちらは、このカラムはどんなことをしているのか示すコメント機能です。 SQLのコメントに追加することができます。 さらに、annotate(gem)を使っている場合には、モデルファイルの上部に追記されるカラムにもコメントが表示されるようになります。
先程のカラム追加を参考に
add_colum: :posts, :status, :text, after: title, comment: "ステータス" add_colum: :posts, tag, :text, after: :status, comment: "タグ" add_colum: :posts, :summary, :text, after: :tag, comment: "サマリー"
のように追加することで、カラムの説明をすることができます。 ドキュメントを残す手間が省けるので良いと思います。
さらに、enum型を使う時
add_colum: :posts, :status:, integer, comment: "ステータス 0: to_do, 10: done, 20: doing"
のような書き方もできます。 enumが変更される度に、変更コストがかかりますが、こちらを都度修正できれば、最小限の工数で維持できるかと思います。
以上、最後までお付き合いいただきありがとうございました。