Я использую модуль PreviousNextable следующим образом:
module PreviousNextable
def self.included(klass)
klass.class_eval do
extend ActiveSupport::Memoizable
memoize :previous
memoize :next
end
end
def previous
self.class.last :order => 'name', :conditions => ['name < ?', self.name]
end
def next
self.class.first :order => 'name', :conditions => ['name > ?', self.name]
end
end
Этот код был адаптирован из SO ответа, данного Райаном Бейтсом. Ваш порядок и условия для определения того, что является предыдущим или следующим, скорее всего, будут отличаться. Вероятно, вы захотите использовать «create_at».
Включите модуль в класс вашей модели:
class Place < ActiveRecord::Base
include PreviousNextable
и ты ушел.