This acts_as
extension provides the capability for having previous & next methods
for an object. Previous & next are based on a specified column (default is id).
-
Rails >= 3
In your Gemfile
gem 'acts_as_previous_next'
Currently is tested on ruby 1.9.3 & 2.0.0 and mysql
class Post < ActiveRecord::Base
acts_as_previous_next
# acts_as_previous_next column: :id
# or
# acts_as_previous_next :id
end
post = Post.new
post.next # => nil
post.save
post.next # => post
post.previous # => post
another_post = Post.new
another_post.save
another_post.next # => post
another_post.previous # => post
Currently CanCan authorization is supported
as option (false
by default). If cancan authorization is enabled then current_ability
must be passed to previous
next
methods. So the previous example with cancan:
class Post < ActiveRecord::Base
acts_as_previous_next with_cancan: true
belongs_to :user
end
And in your view:
link_to 'Next', @post.next(current_ability)
link_to 'Previous', @post.previous(current_ability)
acts_as_previous_next is released under the MIT License