Könnten Sie in diesem Fall die Massenadministrationsaufgabe verwenden?
Obwohl ich gerade Ihren zweiten Code getestet habe und er für mich bei meinem Testbenutzer (E-Mail: test_thirteen@here.invalid, war TL1 und ist jetzt TL0) funktioniert hat.
User.where(trust_level: 1).each do |u|
if u.primary_email&.email.end_with?(".invalid")
u.change_trust_level!(TrustLevel[0])
end
end