19 行
729 B
Ruby
19 行
729 B
Ruby
class PostThumbnailUploadValidator
|
|
MAX_THUMBNAIL_BYTES = 20 * 1024 * 1024
|
|
|
|
class InvalidUpload < StandardError; end
|
|
|
|
def self.validate! thumbnail
|
|
return if thumbnail.blank?
|
|
raise InvalidUpload, 'thumbnail upload が不正です.' unless thumbnail.is_a?(ActionDispatch::Http::UploadedFile)
|
|
raise InvalidUpload, 'thumbnail file size が大きすぎます.' if thumbnail.size > MAX_THUMBNAIL_BYTES
|
|
|
|
attachment = Post.resized_thumbnail_attachment(thumbnail)
|
|
attachment[:io].close if attachment[:io].respond_to?(:close)
|
|
rescue MiniMagick::Error
|
|
raise InvalidUpload, 'サムネイル画像の変換に失敗しました.'
|
|
ensure
|
|
thumbnail&.rewind if thumbnail.respond_to?(:rewind)
|
|
end
|
|
end
|