Essayez ceci :
User.select('users.*,MAX(donations.created_at) as most_recent_donation').
joins(:donations).order('most_recent_donation desc').group('users.id')
Je suppose qu'un utilisateur a de nombreux dons, cela sélectionnerait le don créé le plus récent et sélectionnerait des utilisateurs distincts en filtrant par leur identifiant.
Je n'ai pas testé cela cependant.