在我的 Rails 4 应用程序中,我在模型中定义了函数,而不是在 de 数据库中获取 (nth) 下一行或上一行,环绕整个数据库,因此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
这导致每个方法调用产生三个数据库查询,并且我已经学会将数据库查询保持在最低限度,所以我想知道是否有一种方法可以只用一个查询来获得这个结果。