【160日目】【1日20分のRailsチュートリアル】【第11章】画像のバリデーションを定義する
今日は「11.4.2 画像の検証」から。
11.4.2 画像の検証
11.4.1のアップローダーも悪くはありませんが、いくつかの目立つ欠点があります。
例えば、アップロードされた画像に対する制限がないため、もしユーザーが巨大なファイルを上げたり、無効なファイルを上げると問題が発生してしまいます
とてつもなく容量の大きい画像がアップロードされたらレイアウト崩れだけじゃない問題発生しそう。
生成されたアップローダーの中にコメントアウトされたコードがありますが、ここのコメントアウトを取り消すことで、画像のファイル名から有効な拡張子 (PNG/GIF/JPEGなど) を検証することができます (リスト11.60)。
40行目あたりにあるextension_white_list
のコメントアウトを外す。有効な拡張子はこれでいいのかな。いいんだろうな。
app/uploaders/picture_uploader.rb
# アップロード可能な拡張子のリスト def extension_white_list %w(jpg jpeg gif png) end
2つ目のバリデーションでは、画像のサイズを制御します。これはMicropostモデルに書き足していきます。
画像の容量は5MBまで。
独自のバリデーションを定義するために、今まで使っていたvalidatesメソッドではなく、validateメソッドを使っている点に注目してください。
何が違うんだろう…。独自のバリデーションを定義するためにはvalidateメソッドってこと?
app/models/micropost.rb
: validate :picture_size private # アップロード画像のサイズを検証する def picture_size if picture.size > 5.megabytes errors.add(:picture, "should be less than 5MB") end end end
中途半端だけど今日はここまで。
今日の学習時間は【17分】。
次は「11.4.2 画像の検証」の画像のバリデーションをビューに組み込むところから。