Как найти следующую запись в наборе ActiveRecord? - PullRequest
0 голосов
/ 29 июля 2010

Я работаю в Падрино и у меня это в контроллере

@work.find_by_id(params[:id])

Я хочу добавить кнопки «предыдущий / следующий» в мое представление, и поэтому должен иметь возможность получить путь к следующему элементу в списке. Как я могу сделать это с ActiveRecord?

Ответы [ 2 ]

0 голосов
/ 06 января 2012

Я использую модуль 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  

и ты ушел.

0 голосов
/ 08 октября 2010

Возможно, вы захотите проверить плагин ActsAsAdjacent .Я не уверен, что вы можете использовать плагины с Padrino, но код довольно прост и должен быть в состоянии адаптироваться к вашим потребностям.

...