0

我正在用這一個把我的頭髮撕掉;我有一系列我需要從數據庫中構建數組的記錄。 positive_votes是每個opinion上的一列整數值,所以我很自然地只想得到具有最高整數值的五個Opinion記錄,並從最高(最高值)到第五最高值按順序返回它們。從閱讀Rails指南,我想出了這個查詢:通過Rails中的表格列排序

@opinions = Opinion.order(positive_votes: :desc).limit(5) 

不幸的是,它不工作。看起來要做的是返回按照時間順序創建的第一條記錄,然後是下一條記錄。這是一個漫長的一天,所以我完全準備好這是一個愚蠢的錯誤,但任何幫助將非常感激。

編輯:

生成的SQL如下所示,

(0.1ms) SELECT COUNT(count_column) FROM (SELECT 1 AS count_column FROM "opinions" LIMIT 5) subquery_for_count 
    Opinion Load (0.1ms) SELECT "opinions".* FROM "opinions" ORDER BY '--- 
:postive_votes: :desc' LIMIT 5 
+0

日誌是否打印出生成的原始SQL? – Phlip

+0

是的 - 會更新問題。 –

回答

1

我不認爲你可以使用order的符號。請嘗試以下操作:

@opinions = Opinion.order('positive_votes desc').limit(5) 
+0

這將解釋在SELECT語句中的'.to_s' barf:''--- :postive_votes :: desc'' – Phlip

+0

工作,很好的一個。出於某種原因,我確信你必須使用'.order'方法來使用符號。 –