ActiveRecord Previous/Next Record

Does ActiveRecord offer a simple solution to get previous/next records relative to a certain record? For instance, say I have this table:

PEOPLE id | name 1 | john 2 | mary 3 | bob

Using p = Person.find(2), is it possible to get the previous (john) and next (bob) records using perhaps something like p.previous and p.next? If not, how can I do this without resorting to ugly queries?

Thanks in advance

Try my acts_as_ordered plugin:

http://svn.viney.net.nz/things/rails/plugins/acts_as_ordered/

-Jonathan.

Exactly what I needed, thanks!

Toulax,

   > Using p = Person.find(2), is it possible to get the previous (john)    > and next (bob) records using perhaps something like p.previous and    > p.next? If not, how can I do this without resorting to ugly queries?

If you - only need next() - use MySql (optional)

simply add this in environment.rb :

   class ActiveRecord::Base       def next          self.class.find(:first, :conditions => ['id > ?', self.id])       end    end

For non-MySql db, you might have to add

     :order => 'id asc'

to the query.

(see: Buckblog: Faking cursors in ActiveRecord)

Alain Ravet http://blog.ravet.com