使用Rails 3.0 + Postgres查询的复杂顺序

时间:2011-03-16 18:24:37

标签: ruby-on-rails postgresql sql-order-by

rails是否有办法在数据库查询级别进行复杂排序?

IE /

Posts.order(up / down).all

在数据库级别(在postgres中)实现此功能的最佳方法是什么,而不必使用sort对ruby中的结果进行排序(这将减慢分页等)。

3 个答案:

答案 0 :(得分:4)

如果您使用精彩的meta_where宝石,您也可以执行类似

的操作
Post.order(:create_at.asc)

要按两列或更多列的功能排序,您可以执行类似

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

您将拥有自己想要的内容,而且该数组中的每个Post对象都将使用ratio方法来了解确切的值。

答案 1 :(得分:1)

Post.order("created_at DESC").all
Post.order("title ASC").all

有关详细信息,请参阅here

答案 2 :(得分:0)

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