Newer
Older
dmpopidor / lib / tasks / user_cleaning.rake
namespace :usercleaning do
    desc 'Remove users who haven\'t accepted invitation after 1 month.'
    task non_accepted_invitations: :environment do
      Rails.logger.info 'Deleting user uncomfirmed users invited over a month ago'
      User
        .where('invitation_sent_at < ? AND invitation_accepted_at IS NULL AND last_sign_in_at IS NULL', 1.month.ago)
        .each do |user|
        p user.email + ' deleted'
        user.destroy
      end
    end
  
    desc 'Anonymize users who haven\'t been connected for five years.'
    task anonymize_users_after_5_years: :environment do
      Rails.logger.info 'Anonymizing users who have not connected for the last 5 years'
  
      User.where('last_sign_in_at < ?', 5.years.ago - 1.month).each do |user|
        case user.last_sign_in_at.to_date
        when (5.years.ago - 1.month).to_date
          UserMailer.anonymization_warning(user).deliver_now
        when (5.years.ago - 1.week).to_date
          UserMailer.anonymization_warning(user).deliver_now
        when (5.years.ago - 1.day).to_date
          UserMailer.anonymization_warning(user).deliver_now
        when 5.years.ago.to_date
          user.archive
        end
      end
    end
  end