給出以下查詢:有沒有辦法判斷一個ActiveRecord查詢打了極限
Cars.where(color: red).limit(5)
有沒有辦法告訴如果限制被擊中。假設有6輛紅色汽車,我是否需要單獨查詢來計算紅色汽車的總數?
基本上,我試圖發送一條消息給用戶,讓他們知道搜索由於達到了允許的最大結果數量而受到限制。
給出以下查詢:有沒有辦法判斷一個ActiveRecord查詢打了極限
Cars.where(color: red).limit(5)
有沒有辦法告訴如果限制被擊中。假設有6輛紅色汽車,我是否需要單獨查詢來計算紅色汽車的總數?
基本上,我試圖發送一條消息給用戶,讓他們知道搜索由於達到了允許的最大結果數量而受到限制。
您的問題的直接答案是,您無法在單個查詢中獲取此信息。您將不得不運行兩個查詢:一個返回有限集合,一個查找總計數。
唯一不需要的是當您查詢結果的第一頁(偏移量爲0)並且返回結果的數量小於限定值時(例如,您將限制設置爲5但返回4個結果)。
示例代碼應該是這樣的:
limit = 5
cars_scoped = Cars.where(color: red)
cars = cars_scoped.limit(limit)
cars_count = cars.length < limit ? cars.length : cars_scoped.count
如果結果足夠少並且您已經知道,請避免再次查詢count。尼斯。 –
如果要顯示過去5年,限制在技術上並不打,直到下一個頁面 - 在這一點,你就會知道,因爲你已經收到<5個結果背部。 – VNO