Zkuste toto:
User.select('users.*,MAX(donations.created_at) as most_recent_donation').
joins(:donations).order('most_recent_donation desc').group('users.id')
Předpokládám, že uživatel má mnoho darů, tím by se vybral poslední vytvořený dar a vybrali by se odlišní uživatelé filtrování podle jejich ID.
Toto jsem však netestoval.