Hatena::ブログ(Diary)

minorio のプログラミング・メモ

RSS2

2008-04-27

[][] Rails 2.0 での add_column / remove_column の自動生成 16:20

既存のテーブルに列を追加したい場合、ジェネレーターで migration add_column とかやるのだけど、Rails 2.0 では少し便利になって、以下のように書けるらしい。

>script/generate migration AddPriceToProduct price:decimal

Addカラム名Toモデル名、の後にカラムのタイプ指定というフォーマット。これを実行すると db/migrate/20080427070207_add_price_to_product.rb のような名前で以下のマイグレーションファイルが自動生成される。

class AddPriceToProduct < ActiveRecord::Migration
  def self.up
    add_column :products, :price, :decimal
  end

  def self.down
    remove_column :products, :price
  end
end

このカラムにさらに有効桁数や初期値などを設定したい場合は以下のように書き足せばいい。

class AddPriceToProduct < ActiveRecord::Migration
  def self.up
    add_column :products, :price, :decimal, :precision => 8, :scale => 2, :default => 0
  end

  def self.down
    remove_column :products, :price
  end
end

また、Removeカラム名Fromモデル名のようにして、カラムを削除するマイグレーションファイルも生成できるらしい。

Ruby on Rails 2.0 その後の発見

トラックバック - http://d.hatena.ne.jp/minorio/20080427/1209280851