アップロードファイルのサイズやcontent_typeなど、制限する場合があると思います。標準のvalidatorでは足りないので、自前で書いたり、carrierwave
なんかであればuploaderに制限を書いたりします。
モデルでファイル関連のvalidator
を使えるようになるfile_validators
というのがあるので、簡単に紹介。
百聞は一見にしかずだと思うので、サンプルコードを紹介。
class Profile < ActiveRecord::Base
validates :avatar, file_size: { less_than_or_equal_to: 100.kilobytes },
file_content_type: { allow: ['image/jpeg', 'image/png'] }
end
file_size
やfile_content_type
といったバリデーションができるようになっています。
これによって指定のサイズ以上は受け付けないとか、変なファイルを受け付けないとかの制御ができます。
file_content_type
については正規表現の指定も可能で、↓のように書くと画像全般を許可できそうです。
validates :avatar, file_content_type: { allow: /^image\/.*/ }
エラーメッセージのi18nにも対応しているようなので実用性はありそうだし、細々とだけどメンテもされているみたいなので使ってみても良さそうという感じです。