У меня есть области действия, определенные в модуле включения, например:
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, это решило бы мою проблему. Но смещение, которое существует только , устанавливает смещение возвращаемых записей.