在 Rails 的 where 條件下,如何將連接表的列值與算術運算一起使用?
User并且Order是兩個Schema,Order具有user通過外鍵關系
我的目標是查找是否在用戶創建后 5 分鐘內創建/下訂單(了解注冊下訂單的用戶)
嘗試了以下查詢
Order.where('country': 'US').joins(:user).where('orders.created_at <= :u_date', {u_date: 'users.created_at' 5.minutes })
使用此查詢,我們得到以下錯誤no implicit conversion of Time into String,因此users.created_at未評估為 Date
因此嘗試將字串轉換為 DateTime 物件,但也失敗了
Order.joins(:user).where('orders.created_at < ?', 'users.created_at' 5.minutes)
如何在 Where 查詢中進行比較?現在我正在提取資料并進行比較,讓它在 Where 或任何相關查詢本身中作業會很棒
uj5u.com熱心網友回復:
您正在呼叫 作為引數傳遞 Time 物件的字串,這不是開箱即用的操作,至少在 Rails 中是這樣。
如果添加的時間不是動態的,您可以嘗試;
where("orders.created_at <= users.created_at INTERVAL '5.minutes'")
這使您的 DBMS 添加適當的間隔users.created_at(在這種情況下,我假設是 Postgresql)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/517945.html
上一篇:需要具有哈希映射陣列的結構
