RailsのMigrationで:binaryとするとMySQLではblob型になる。
create_table :files do |t| t.column :data, :binary end
MySQLでのblob型
型 | サイズ |
---|---|
TINYBLOB | 256byte |
BLOB | 64KB |
MEDIUMBLOB | 16MB |
LONGBLOB | 4GB |
Migrationでは:binaryしか選択肢がなくMySQLだとblob型として解釈される。
画像ファイルならば普通に大丈夫だけど他のファイルも扱うと苦しい。
SQLで直に属性を定義することでこの問題は解消する
class AlterModifyLongblob < ActiveRecord::Migration def self.up execute("alter table table_name modify column_name longblob") end def self.down execute("alter table table_name modify column_name blob") end end
属性変更するならこんなMigration書いて実行すればlongblog型に変更される。
[asin:4274068668:detail]