画像投稿を簡単に導入できるactive_storageというGemがあります。画像投稿は簡単に実装できるようになりますが、PDFなども画像として投稿可能なため、思わぬエラーの原因になり得ます。そこで、バリデーション設定するにアウトプットします。
結論
Active Storage ValidationsというGemを導入すると、既存のvalidateと同じような記述でバリデーションを追加できます。もう1つの方法は自身でバリデーションのメソッドを定義する方法ですが、今回こちらは紹介しません。
導入方法
gemfile
# Rails 5.2 and Rails 6バージョンのみ利用可能
gem 'active_storage_validations'
#記述後bundle install
やったこと
画像ファイルの拡張子に制限をかけることと、大きすぎる画像は投稿できないようにしました。
model
validates :image, content_type: {in:[:png, :jpg, :jpeg], message: "はpng, jpg, jpegいずれかの形式にして下さい"},
size: { between: 1.kilobyte..4.megabytes , message: '画像容量が大きすぎぃ、4megabytes以下でおなしゃす' }
その他設定できるバリデーションは「ファイルの寸法(横幅、縦幅)、アップロードする画像数、画像の縦横比、画像が存在するか否か」があります。
参考サイト