Spróbuj tego:
User.select('users.*,MAX(donations.created_at) as most_recent_donation').
joins(:donations).order('most_recent_donation desc').group('users.id')
Przypuszczam, że użytkownik ma wiele darowizn. Wybrałoby to ostatnio utworzoną darowiznę i wybrałoby odrębnych użytkowników filtrujących według ich identyfikatora.
Jednak nie testowałem tego.