我遇到了Rails 4 ActiveRecord中的.first查詢問題。 Rails 4中的新行爲是添加一個order id字段,以便所有db系統將輸出相同的順序。Rails:使用ActiveRecord .first查詢時忽略子句順序?
所以這...
Foo.where(bar: baz).first
會給查詢...
select foos.* from foos order by foos.id asc limit 1
我遇到的問題是我的選擇有兩個和領域。隨着訂單編號自動拋出查詢,我得到一個錯誤,ID字段必須出現在group by子句。錯誤是正確的,如果我想輸出是這兩個字段的總和,則不需要id字段。
這裏是不工作的例子...
baz = Foo.find(77).fooviews.select("sum(number_of_foos) as total_number_of_foos, sum(number_of_bars) as total_number_of_bars").reorder('').first
以下是錯誤...
由於選擇是聚集表達,沒有必要爲訂購編號,但AR正在自動投入。
我發現我可以前的。首先上添加重新排序(「」)到最後,並且消除了順序按id,但是是正確的方式來解決這一問題?
謝謝
[更新]我忘了提及的是,我將一個大的Rails 3項目到Rails 4.因此,從Rails 3的輸出是一個AR對象。如果可能的話,我希望解決方案保持該格式,以便在轉換中更改代碼的數量較少。
完美地工作。謝謝回覆。 – dsmorey