代码之家  ›  专栏  ›  技术社区  ›  Kevin

使用方法而不是数据库中的字段对“查找”进行排序

  •  0
  • Kevin  · 技术社区  · 14 年前

    我有一个票证模型,里面有一个叫做 closes_in 计算DB字段剩余时间的 start_date:date 直到现在。当前我的查找查询是:

        @tickets = Ticket.find(:all, 
                           :origin => @user.coords, 
                           :order => 'distance',
    

    我不能在出错的时候就把它放进去。我该怎么做才能用得上 如果查询是方法而不是数据库中的实际字段,是否对其进行排序?

    2 回复  |  直到 14 年前
        1
  •  0
  •   Harish Shetty    14 年前

    如果您使用的是MySQL:

    @tickets = Ticket.all(:order => "DATEDIFF(CURDATE(), start_date)")
    

    @tickets = Ticket.all(:order => "AGE(start_date)")
    

    这样就可以使用DB进行排序。使用ruby进行排序应该限制在一个小的数据集上,这个数据集可以保证很小。

        2
  •  2
  •   jpemberthy    14 年前

    使用 sort_by 方法:

    @tickets = Ticket.find(:all, :conditions => "foo").sort_by { |t| t.closes_in }