diff --git a/lib/maintainer/update_users_active_state.rb b/lib/maintainer/update_users_active_state.rb new file mode 100644 index 00000000..5334cf61 --- /dev/null +++ b/lib/maintainer/update_users_active_state.rb @@ -0,0 +1,44 @@ +# lib/update_users_active_state.rb +module Maintainer + class UpdateUsersActiveState + def self.update_users_active_state + if ARGV.size < 2 + puts 'Usage: rails runner lib/maintainer/update_users_active_state.rb ...' + puts ' is screen_name' + exit 0 + end + + command = ARGV.shift + names = ARGV + + case command + when 'activate' + change_active_state(names, activate: true) + when 'deactivate' + change_active_state(names, activate: false) + else + puts "Invalid command: #{command}. Use 'activate' or 'deactivate'." + exit 1 + end + end + + def change_active_state(names, activate:) + from_state = !activate + to_state = activate + + users = User.where(screen_name: names, active: from_state) + + if users.empty? + puts "No matching #{from_state ? 'activate' : 'deactivate'} users found." + exit 0 + end + + action = activate ? 'activate' : 'deactivate' + puts "Found #{users.count} #{from_state ? 'activate' : 'deactivate'} user(s) to #{action}:" + users.each { |u| puts " - #{u.screen_name} (id: #{u.id})" } + + users.update_all(active: to_state) + puts "Updated User.active:#{to_state}" + end + end +end diff --git a/lib/update_users_active_state.rb b/lib/update_users_active_state.rb deleted file mode 100644 index 9d35b3cc..00000000 --- a/lib/update_users_active_state.rb +++ /dev/null @@ -1,39 +0,0 @@ -# lib/update_users_active_state.rb - -def change_active_state(names, activate:) - from_state = !activate - to_state = activate - - users = User.where(screen_name: names, active: from_state) - - if users.empty? - puts "No matching #{from_state ? 'activate' : 'deactivate'} users found." - exit 0 - end - - action = activate ? "activate" : "deactivate" - puts "Found #{users.count} #{from_state ? 'activate' : 'deactivate'} user(s) to #{action}:" - users.each { |u| puts " - #{u.screen_name} (id: #{u.id})" } - - users.update_all(active: to_state) - puts "Updated User.active:#{to_state}" -end - -if ARGV.size < 2 - puts "Usage: rails runner lib/update_users_active_state.rb ..." - puts " is screen_name" - exit 0 -end - -command = ARGV.shift -names = ARGV - -case command -when "activate" - change_active_state(names, activate: true) -when "deactivate" - change_active_state(names, activate: false) -else - puts "Invalid command: #{command}. Use 'activate' or 'deactivate'." - exit 1 -end