2012-03-30 11 views

Odpowiedz

10
one_of_oldest_users = User.desc(:age).limit(1).first 

to będzie Ci się jeden z użytkowników z największą wieku (w przypadku istnieje kilka). Jeśli chcesz je wszystkie, najprostszym sposobem jest użycie dwuprzebiegowego.

max_age = User.max(:age) 
oldest_users = User.where(age: max_age) 

# or, if you like one-liners 
oldest_users = User.where(age: User.max(:age)) 

Aby poprawić skuteczność tych zapytań, konieczny jest oczywiście indeks na stronie :age.

+0

To nie powiedzie się, jeśli maksymalny wiek wynosi, powiedzmy, 23 i jest pięć osób, które mają ten wiek. –

+0

Jedynym sposobem jest uporządkowanie całej kolekcji>? –

+0

@muistooshort: ah, nie czytałem wystarczająco uważnie. Myślenie ... –

Powiązane problemy