我在include模块中定义了这样的范围:
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将自动使用名称。
实际上,如果有一个方法返回了当前ActiveRecord对象的偏移量,可以解决我的问题。但是仅存在的偏移设置返回记录的偏移量。