Hãy thử điều này:
User.select('users.*,MAX(donations.created_at) as most_recent_donation').
joins(:donations).order('most_recent_donation desc').group('users.id')
Tôi cho rằng một người dùng có nhiều khoản đóng góp, điều này sẽ chọn khoản đóng góp được tạo gần đây nhất và sẽ chọn những người dùng riêng biệt lọc theo id của họ.
Tuy nhiên, tôi chưa thử nghiệm điều này.