我有一個內部方法,名爲closes_in
的票據模型計算從數據庫字段start_date:date
到現在剩下的時間。目前我發現的查詢是:使用方法而不是數據庫中的字段排序「查找」
@tickets = Ticket.find(:all,
:origin => @user.coords,
:order => 'distance',
我不能只是把closes_in,因爲我得到一個錯誤。我該如何做到這一點,所以我可以使用closes_in
來排序查詢,如果它是一個方法,而不是數據庫中的實際字段?
@tickets = Ticket.all(:order => "DATEDIFF(CURDATE(), start_date)")
如果您正在使用PostgreSQL:
@tickets = Ticket.all(:order => "AGE(start_date)")
您使用DB進行排序這樣,如果你正在使用MySQL
@tickets = Ticket.find(:all, :conditions => "foo").sort_by { |t| t.closes_in }
謝謝,這是否適用於Postgres? – Kevin 2010-07-14 21:42:24
我已經用PostgreSQL解決方案更新了答案 – 2010-07-14 23:38:57
謝謝!因此,在這種情況下,我可能會使用你的解決方案,儘管它有助於瞭解jpemberthy爲其他複雜方法提供的Ruby替代方案,這些方法在DB中可能不容易計算。 – Kevin 2010-07-15 01:54:09