ぞえの技術めも

Ruby on Rails勉強中

【160日目】【1日20分のRailsチュートリアル】【第11章】画像のバリデーションを定義する

Ruby on Railsチュートリアル(第3版)

今日は「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 画像の検証」の画像のバリデーションをビューに組み込むところから。