接下来,基于当前的排序顺序

时间:2012-03-16 02:41:29

标签: ruby-on-rails activerecord scopes

我在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对象的偏移量,可以解决我的问题。但是仅存在的偏移设置返回记录的偏移量。

0 个答案:

没有答案