Можно ли в этом случае использовать массовую административную задачу?
Хотя я только что протестировал ваш второй код, и он сработал у меня для тестового пользователя (email: test_thirteen@here.invalid, был TL1, теперь TL0).
User.where(trust_level: 1).each do |u|
if u.primary_email&.email.end_with?(".invalid")
u.change_trust_level!(TrustLevel[0])
end
end