Выберите n объектов случайным образом с условием в Rails - PullRequest
4 голосов
/ 31 января 2010

У меня есть модель с именем Post, с колонкой под названием голосования, и она имеет большое количество сообщений

Я хочу выбрать n постов, которые имеют> = x голосов. n очень мало по сравнению с количеством постов

Каков наилучший способ сделать это? Я попробовал несколько способов, которые кажутся очень неэффективными. Спасибо

1 Ответ

2 голосов
/ 31 января 2010

Если вы используете MySQL, вы можете произвольно заказать все записи, которые соответствуют критериям больше, чем критерий, и выбрать верхнее n.

Фактический запрос будет выглядеть как

SELECT * FROM posts WHERE votes >= x ORDER BY rand() LIMIT n

Не проверял это, но что-то вроде этого должно работать в Rails:

Post.all(:conditions => ["votes >= ?", x], :order => "rand()", :limit => n)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...