0
在我的Rails 4應用程序中,我定義了函數,而不是獲取數據庫中第(n)行的下一行或上一行,環繞整個數據庫,因此Item.last.next
將引用Item.first
:包裝「下一個」和「上一個」函數
def next(n=0)
following = Item.where("id > ?", self.id).order("id asc") + Item.where("id < ?", self.id).order("id asc")
following[n % following.length]
end
def prev(n=0)
n = n % Item.count-1
previous = Item.where("id < ?", self.id).order("id desc") + Item.where("id > ?", self.id).order("id desc")
previous[n % previous.length]
end
因此,每個方法調用三個數據庫查詢,我已經學會了保持數據庫查詢到最低限度,所以我不知道是否有一種方法做得到這樣的結果只有一個查詢。
編輯 - 謝謝,實際上很有幫助,看到你在行動。 :-) – Maarten
等等,我在想它:)以前應該沒問題吧。 –
但是如何: \ *刪除的項目,將導致ID範圍內的差距 \ *包裝。 'Item.last.next'將返回'nil',但應返回'Item.first'。 – Maarten