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:
http://weblog.jamisbuck.org/2007/4/6/faking-cursors-in-activerecord)

Alain R.
http://blog.ravet.com

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs