Опитайте това:
User.select('users.*,MAX(donations.created_at) as most_recent_donation').
joins(:donations).order('most_recent_donation desc').group('users.id')
Предполагам, че потребител има много дарения, това ще избере най-скоро създаденото дарение и ще избере отделни потребители, филтрирани по техния идентификатор.
Все пак не съм тествал това.