我在包含模块中定义了范围,如下所示:
module ActsAsAdjacent
def self.included(base)
base.send(:scope, :next, lambda {|id| {:conditions => ["id > ?",id],
:order => "id ASC", :limit => 1}})
base.send(:scope, :previous, lambda {|id| {:conditions => ["id < ?",id],
:order => "id DESC", :limit => 1}})
end
但实际上我想要它,所以它接下来会这样做,之前不是基于某个特定的列,而是基于当前的排序顺序,例如,如果
class User < ActiveRecord::Base
default_scope :order => 'users.name ASC'
include ActsAsAdjacent
然后 ActsAsAdjacent 将自动使用 name 代替。
实际上,如果有一种方法可以返回当前 ActiveRecord 对象的偏移量,就可以解决我的问题。但是存在的偏移量只设置返回记录的偏移量。