Prueba esto:
User.select('users.*,MAX(donations.created_at) as most_recent_donation').
joins(:donations).order('most_recent_donation desc').group('users.id')
Supongo que un usuario tiene muchas donaciones, esto seleccionaría la donación creada más reciente y seleccionaría distintos usuarios filtrando por su id.
Sin embargo, no he probado esto.