Rails 3 plugin for simple ordering.
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
.document
.gitignore
.rspec
Gemfile
Gemfile.lock
MIT-LICENSE
README.md
Rakefile
ar-orderable.gemspec

README.md

Activerecord::Orderable

Rails 3 plugin for simple ordering.

Install

Insert into your Gemfile:

gem "ar-orderable"

then bundle install

Setup

  1. Add order field, like order_nr as integer
  2. In model add line acts_as_orderable and if needed add options
    • column: "my_custom_order_field" # default it's order_nr
    • scope: :locale # to order in some scope, you can add also as array [:locale, :some_type]
  3. If your table already has some rows of data then call the YourModel.order_unordered after adding new column.

Example migration:

add_column :categories, :order_nr, :integer # change to your column name
Category.order_unordered # remove this for new table
add_index :categories, :order_nr

Examples

To reorder items use the move_to(<integer>), move_up and move_down methods, for example:

item.move_to 3 # moved to 3rd position
item.move_up # moved to 2rd position
item.move_down # moved to 3d position

To skip model callbacks and just update order information you can specify :skip_callbacks => true option:

# in your model
acts_as_orderable :skip_callbacks => true

# or whenever you call one of the ordering methods
item.move_to 3, :skip_callbacks => true
item.move_up :skip_callbacks => true
item.move_down :skip_callbacks => true

Tests

rspec spec # all examples should be green

Copyright (c) 2009 IT House, released under the MIT license