akishin999の日記

調べた事などを書いて行きます。

Migration ファイル生成時にカラムサイズやインデックス生成を指定できる

Rails の generator でマイグレーションファイルを生成する時に、カラムのサイズやインデックス追加を指定する事が出来るんですね。
恥ずかしながら今日まで知りませんでした。

例えば以下のような感じで生成すると

% bundle exec rails g scaffold note title:string{10}:uniq content:text:index state:integer{2} deleted_at:datetime lock_version:integer

以下のようなマイグレーションファイルが作成されます。

class CreateNotes < ActiveRecord::Migration
  def change
    create_table :notes do |t|
      t.string :title, limit: 10
      t.text :content
      t.integer :state, limit: 2
      t.datetime :deleted_at
      t.integer :lock_version

      t.timestamps
    end
    add_index :notes, :title, unique: true
    add_index :notes, :content
  end
end

型の横のブレース内に指定した数字でカラムのサイズを、型とコロンで区切って index で通常のインデックス、uniq でユニークインデックスの追加が指定できます。

references は知っていたけどこの辺は知らなかったので、今まで生成した後に手で修正してました。
何時からできるようになってたんだろう?
最初から?