ユーザーアイコン設定しようとして
$ rails g model User (略) icon:binary
ってしてたら
MySQLにblob型(最大64kb)で定義されてしまった。容量の大きいアイコンだと途中で切れてしまう事態に。
対応
例えばアイコンの上限値を700kbまで許可するように変更するのであれば、migrationファイルに以下のように書けばOK。
def up
change_column :users, :icon, :binary, :limit => 700.kilobyte
end
もちろんCreateのときにやってもOK。
これで blob => mediumblob になってくれます。
ただし、ここで700KBと指定したからといって701KB以上をエラーにしてくれるわけではなさそう。(未検証)
DBのテーブルににそんな制限はかかってないし、生成されるUser.rb
にもそんな記述はないため。
そこはちゃんとModelにValidation処理を書かないとダメかなと思います。
あくまでここで指定された"limit"を許容する型にしてくれるというだけの動きだと思われます。
ちなみに
blob ラージバイナリ(最大 65535 bytes)
mediumblob ラージバイナリ(最大 1677215 bytes)
largeblob ラージバイナリ(最大 4294967295 bytes)
らしい。
[PHP + MySQL 編1 - 項目型、テーブル作成、項目削除、件数制限問い合わせ - SAK Streets](PHP + MySQL 編1 - 項目型、テーブル作成、項目削除、件数制限問い合わせ - SAK Streets)