migrationのadd_columnでafterオプションを付加する

追記

こっちどーぞ
http://d.hatena.ne.jp/foosin/20090531/1243765471


何かマイグレーションのadd_columnでafterを付けたがってる人の気配を感じたのでやってみる。
ActiveRecordのソースを書き換えれば3秒で出来る。

[/usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/connection_adapters/abstract]
% diff schema_statements.rb schema_statements.rb_org
396,398d395
<         if options[:after]
<           sql << " AFTER #{options[:after]}"
<         end

いじる箇所はadd_columnではなくadd_column_optionsメソッドである。

add_column使用例。

  def self.up
    add_column :users, :added, :string, :default => 'a', :after => 'id'
  end

発行されるクエリ。

ALTER TABLE `users` ADD `added` varchar(255) DEFAULT 'a' AFTER id


とまあこんなの簡単なのだけど、これをActiveRecordを書き換えずに、となると分からない。
perlで言えば

 *ActiveRecord::add_column_options = $coderef;

とかして終わりなのだけど。