2014-10-07 2 views
0

Я стараюсь заказать сообщения. Сначала я хотел бы заказать сообщения в случайном порядке, а затем эти случайные сообщения должны быть упорядочены по отсутствию приоритетов.рельсы с несколькими заказами

Я пробовал:

@posts= @posts.order("RANDOM(), upvotes DESC").limit(10) 

, но это не работает. Пожалуйста помоги. Спасибо!

+0

Я думаю, что концептуально, что вы хотите на самом деле к порядку голоса, а затем случайным образом ... в противном случае upvotes почти никогда не имеет значения. Кроме того, зачем они вам заказываются случайным образом? Если во всех сообщениях имеется достаточное количество аппроксимаций, тогда случайная часть должна ограничиваться несколькими сообщениями за раз и редко имеет значение? – user3334690

+0

Да, это именно то, что я хочу. Пожалуйста, дайте мне знать, если у вас есть ответ. – user3477051

ответ

0

Ну, как я хотел бы сделать это, как это:

Post.select("#{Post.table_name}.*, random() AS rsort").order("rsort, upvotes DESC").limit(10) 

В основном это просто говорит, выбрать все столбцы в таблице сообщений, а также по имени курорт колонка (который представляет собой случайное число между 0 и 1). Затем упорядочиваем столбец rsort, за которым следует столбец upvotes. Кроме того, после этого вы сможете получить доступ к атрибуту rsort в экземпляре модели.

P.S. Вероятно, должно получиться лучшее имя столбца, чем rsort.