2009-11-15 79 views
3

有什麼方法可以在find方法中使用:limit和:order選項。我試圖按降序對活動進行排序,以顯示最新的活動。但是,當我嘗試使用(:all,:limit => 5,:order =>'Date desc)時,出現錯誤。我需要限制到只有5條記錄,當我不顧命令選項,它的工作原理,但不是我所需要...使用:order和:limit選項 - Ruby On Rails

感謝

回答

9

我想你錯過在你的例子報價。

Model.find(:全部:極限=> 5:爲了=> 'created_at遞減')

確保日期列在表中。

+0

我試過,但我得到這個錯誤 在以下位置BY子句中的次序表達,或啓動與「ORDER BY」子句中的「DATE」無效。原因代碼=「2」。 SQLSTATE = 42822 – user211662 2009-11-15 23:01:34

+1

它可能不被稱爲「日期」。嘗試「日期」,「created_at」或「updated_at」。 – dylanfm 2009-11-16 01:11:44

0

您的日期欄實際上是否被稱爲date?首先,我會改變這種情況,日期是大多數數據庫中函數的名稱,這可能是導致錯誤的原因。 Rails使用created_at,updated_at等,因此遵循該命名方案將使您的代碼對未來的維護人員更具可讀性。

你可以嘗試在反單引號引用的列名:

:order => "`date` desc" 
+0

不幸的是,這個問題與日期列沒有關係,它在我不使用:limit選項時完美工作,它按日期降序排序。我知道列名不可取,但現在無法更改。 限制選項在沒有訂單選項時使用,反之亦然 – user211662 2009-11-16 02:23:25

+0

您可以發佈SQL試圖執行的日誌嗎? – 2009-11-16 13:48:39