ygor / acts_as_sortable

Sort your active record models

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ActsAsSortable

ActsAsSortable is a plugin to allow easy sorting of active record models on (selected) attributes.

Installation

Run the following command:

rails plugin install git://github.com/ygor/acts_as_sortable.git

Usage

For your model(s) that you want to allow to be sorted, just add the mixin and pass the names of the attributes, class methods or scopes that can be used for sorting:

class Book < ActiveRecord::Base
  # attributes: name, author and genre
  ...
  acts_as_sortable :name, :'author.name', :genre # if you do not pass any parameters, all valid attributes and scopes are available for sorting
  ...
end

Then use the following to sort:

@books = Book.sorted('name', 'asc').all # sorts all books by name ascending
@books = Book.sorted(['name', 'asc']).all # other possibility

Or pass multiple sort keys:

@books = Book.sorted(['author.name', 'asc'], ['name', 'desc']).all # sorts all books by author name ascending, followed by name descending
@books = Book.sorted([['author.name', 'asc'], ['name', 'desc']]).all # same as above, different way of passing parameters
@books = Book.sorted('author.name', 'asc', 'name', 'desc').all # third way of calling sorted

You can also call sorted on a scope model, e.g.

@books = Book.where('name != "").joins(:author).sorted('name', 'desc').all # sorts all books by author name ascending, followed by name descending

About

Sort your active record models


Languages

Language:Ruby 100.0%