我需要獲取具有特定值的最后一條記錄,但不加載它。
我必須做類似的事情:
Thing.where(cool: true).where(created_at: Thing.where(cool: true).maximum(:created_at))
以上是一種方法,但它會進行第二次查詢以首先獲取最大值。我想在一個查詢中完成所有操作,并獲得相當于 something = max(etc) 的 SQL。
就在有人提到它之前:.last不起作用,因為它回傳一個物件而不是關系。
換句話說,我需要做.last但回傳一個關系而不是物件。
uj5u.com熱心網友回復:
試試這個方法:
Thing.where("cool=1 AND created_at=(SELECT MAX(created_at) FROM things WHERE cool=1)")
在 Rails 7 上,當我測驗您的查詢時,資料庫只被查詢一次。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/473765.html
上一篇:RailsRake任務-通過傳遞模型名稱和ID作為引數來洗掉記錄
下一篇:寶石到Rails中的本地庫
