読者です 読者をやめる 読者になる 読者になる

RailsのBLOB型をMySQLのblobからmediumblobやlargeblobにする方法

Rails

RailsでBLOB型を定義すると、MySQLのblobと対応づけられます。MySQLのblobは64KB程度なので、ちょっとしたファイルの保存もできないようなサイズです。

MySQLにはblobよりも大きなmediumblobやlargeblobがあり、rake db:migrateのあとでデータ型を変更したりしていたのですが、もっとよい方法がありました。

以下のようにlimitを指定することで、それに対応したデータ型が選択されます。

lass CreateContents < ActiveRecord::Migration
  def change
    create_table :assessments do |t|
      t.integer :user_id
      t.string :title
      t.binary :pdf, :limit => 1.megabyte

      t.timestamps
    end
  end
end

この例では、mediumblobで作成されました。

参考:RailsとDBの罠 - さくさんの日記