THIS REPO IS NO LONGER MAINTAINED
We haven’t used this for a while. If you would like to take over ownership of this repo, please let us know.
Sortable-model provides a DSL for creating named scopes that order the object in question based on its own attributes or those of its associations. It also provides a method for calling those scopes that allows the values to come directly from params without the risk of arbitrary code execution.
Examples:
# Schema: # Student: id (primary key), name (string), :major (string) # Papers: id (primary key), student_id (int), title (string), grade (int)
class Student < ActiveRecord::Base
has_many :papers sortable_model can_sort_by :name #=> student.sorted_by(:name) is students ordered by name DESC #=> student.sorted_by(:name, true) is students ordered by name ASC can_sort_by :grades, :papers => :grade #=> student.sorted_by(:grades) is student ordered by the grades of her papers DESC can_sort_by :something_complicated, lambda { |stdnt| # some code that returns an order hash } #=> This one is really just a named scope that can use the sorted_by sanitizing method
end
The #sorted_by method takes either strings or symbols for the name of the sorter.
-
Fork the project.
-
Make your feature addition or bug fix.
-
Add tests for it. This is important so I don’t break it in a future version unintentionally.
-
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
-
Send me a pull request. Bonus points for topic branches.
Copyright © 2010 EdgeCase LLC. See LICENSE for details.