1 # frozen_string_literal: true
4 desc "Remove invalid avatars from users"
5 task :remove_invalid_avatars => :environment do
6 chunk_size = ENV["CHUNK_SIZE"]&.to_i || 10_000
8 min_id = ENV["MIN_USER"]&.to_i || User.minimum(:id)
9 max_id = ENV["MAX_USER"]&.to_i || User.maximum(:id)
11 User.where(:id => min_id..max_id)
12 .joins(:avatar_attachment)
13 .in_batches(:of => chunk_size) do |batch|
16 puts "Processing users #{ids.first} to #{ids.last} ..."
19 if user.invalid? && user.errors.include?(:avatar)
20 puts "Purging invalid image for user #{user.id}"
21 user.avatar.purge_later