Module: SearchObject::Plugin::Sorting
- Defined in:
- lib/search_object/plugin/sorting.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
- #reverted_sort_direction ⇒ Object
- #sort?(attribute) ⇒ Boolean
- #sort_attribute ⇒ Object
- #sort_direction ⇒ Object
- #sort_direction_for(attribute) ⇒ Object
- #sort_params_for(attribute, options = {}) ⇒ Object
Class Method Details
.included(base) ⇒ Object
4 5 6 7 8 9 10 11 |
# File 'lib/search_object/plugin/sorting.rb', line 4 def self.included(base) base.extend ClassMethods base.instance_eval do option :sort do |scope, _| scope.order sort_attribute => sort_direction end end end |
Instance Method Details
#reverted_sort_direction ⇒ Object
38 39 40 |
# File 'lib/search_object/plugin/sorting.rb', line 38 def reverted_sort_direction sort_direction == 'desc' ? 'asc' : 'desc' end |
#sort?(attribute) ⇒ Boolean
13 14 15 |
# File 'lib/search_object/plugin/sorting.rb', line 13 def sort?(attribute) attribute == sort || sort.to_s.starts_with?("#{attribute} ") end |
#sort_attribute ⇒ Object
17 18 19 |
# File 'lib/search_object/plugin/sorting.rb', line 17 def sort_attribute @sort_attribute ||= Helper.ensure_included sort.to_s.split(' ', 2).first, self.class.sort_attributes end |
#sort_direction ⇒ Object
21 22 23 |
# File 'lib/search_object/plugin/sorting.rb', line 21 def sort_direction @sort_direction ||= Helper.ensure_included sort.to_s.split(' ', 2).last, %w[desc asc] end |
#sort_direction_for(attribute) ⇒ Object
25 26 27 28 29 30 31 |
# File 'lib/search_object/plugin/sorting.rb', line 25 def sort_direction_for(attribute) if sort_attribute == attribute.to_s reverted_sort_direction else 'desc' end end |
#sort_params_for(attribute, options = {}) ⇒ Object
33 34 35 36 |
# File 'lib/search_object/plugin/sorting.rb', line 33 def sort_params_for(attribute, = {}) ['sort'] = "#{attribute} #{sort_direction_for(attribute)}" params end |