migration で blob の代わりに longblob を使わせる

migration で ↓ のように :binary を指定していたら、mysql では blob 型になっていた。

class Init < ActiveRecord::Migration
  def self.up
    create_table :articles do |t|
      t.column :data, :binary
    end
  end
end

blob じゃなくて longblob を使いたいんだけど…。(blob は 64KB までしか入らない)

どうするのがスマートなのか解らないけど、結局 ↓ のようにして longblob になるようにした。

class Init < ActiveRecord::Migration
  def self.up
    case adapter_name
    when "MySQL"
      binary_type = "longblob"
    else
      binary_type = :binary
    end

    create_table :articles do |t|
      t.column :data, binary_type
    end
  end
end

mysql でしか実行しないなら adapter_name を見る必要はないけど。