我有一个票证模型,里面有一个名为closes_in的方法,它计算从DB字段start_date:date到现在的剩余时间。目前我的find查询是:
@tickets = Ticket.find(:all,
:origin => @user.coords,
:order => 'distance',当我收到一个错误时,我不能只放入closes_in。如果查询是一个方法而不是数据库中的实际字段,那么如何使用closes_in对查询进行排序?
发布于 2010-07-15 04:35:27
如果您使用的是MySQL:
@tickets = Ticket.all(:order => "DATEDIFF(CURDATE(), start_date)")如果您使用的是PostgreSQL:
@tickets = Ticket.all(:order => "AGE(start_date)")这样,您就可以使用DB进行排序。使用ruby进行排序应该限制在保证保持较小的小数据集上。
发布于 2010-07-15 03:54:09
使用sort_by方法:
@tickets = Ticket.find(:all, :conditions => "foo").sort_by { |t| t.closes_in }https://stackoverflow.com/questions/3249879
复制相似问题