Сложный порядок по запросам с использованием Rails 3.0 + Postgres - PullRequest
0 голосов
/ 16 марта 2011

Есть ли у rails какой-либо способ сложной сортировки на уровне запросов к базе данных?

Т.е. / * * 1003

Posts.order(up / down).all?

Каков наилучший способ реализовать это на уровне базы данных (в postgres) без необходимости сортировать результаты в ruby ​​с помощью сортировки (что замедлит разбиение на страницы и т. Д.).

Ответы [ 3 ]

4 голосов
/ 16 марта 2011

Если вы используете чудесный камень meta_where, вы также можете сделать что-то вроде

Post.order(:create_at.asc)

Для сортировки по функции из двух или более столбцов вы можете сделать что-то вроде

Post.select("*, (up / down) as ratio").order("ratio asc")

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

1 голос
/ 16 марта 2011
Post.order("created_at DESC").all
Post.order("title ASC").all

См. здесь , для более подробной информации.

0 голосов
/ 30 апреля 2015
Post.select("*, (up / greatest(down, 1)) as ratio").order("ratio asc")
...