Just do IT

思うは招く

Railsガイド「Active Record マイグレーション」を読んだメモ

Active Record マイグレーション - Railsガイド を読んだメモです。

マイグレーション名が"AddColumnToTable"や"RemoveColumnFromTable"で、かつその後ろにカラム名や型が続く形式になっていれば、適切なadd_column文やremove_column文を含むマイグレーションが作成されます。

これは知っていたが、複数カラムもマイグレーションにaddという文字が入っていれば自動でadd_columnメソッドが追記されるのは知らなかった。

 $ rails generate migration AddDetailsToProducts part_number:string price:decimal
 #model.rb

 class AddDetailsToProducts < ActiveRecord::Migration[5.0]
   def change
     add_column :products, :part_number, :string
     add_column :products, :price, :decimal
   end
 end

その他気づき

  • change_columnコマンドはロールバックされない(可逆的でない)
    • なので up down メソッドを使う
    • reversibleメソッドもあるが up, downメソッドのほうがわかりやすい
  • remove_columnは、3番目の引数でカラムの型を指定すればロールバック可能になる
  • revertは以前のマイグレーションの一部のみを逆転したい場合に便利とのことだが、よくわからない。

アプリケーションのデータベースの新しいインスタンスを作成する場合、マイグレーションの全履歴を一から繰り返すよりも、rails db:schema:loadスキーマファイルを読み込む方が、高速かつエラーが起きにくい傾向がある。

感想

そもそものDBの仕組みをよく理解しておかないと本当の意味でActiveRecordは使いこなせなさそう。というかマイグレーションを作成するときに納得して使えなさそう。