Probeer dit:
User.select('users.*,MAX(donations.created_at) as most_recent_donation').
joins(:donations).order('most_recent_donation desc').group('users.id')
Ik veronderstel dat een gebruiker veel donaties heeft, dit zou de meest recent gemaakte donatie selecteren en verschillende gebruikers selecteren die filteren op hun ID.
Ik heb dit echter niet getest.