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
6 7 8 9 10 11 12 13 |
# File 'lib/search_object/plugin/sorting.rb', line 6 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
40 41 42 |
# File 'lib/search_object/plugin/sorting.rb', line 40 def reverted_sort_direction sort_direction == 'desc' ? 'asc' : 'desc' end |
#sort?(attribute) ⇒ Boolean
15 16 17 |
# File 'lib/search_object/plugin/sorting.rb', line 15 def sort?(attribute) attribute == sort || sort.to_s.starts_with?("#{attribute} ") end |
#sort_attribute ⇒ Object
19 20 21 |
# File 'lib/search_object/plugin/sorting.rb', line 19 def sort_attribute @sort_attribute ||= Helper.ensure_included sort.to_s.split(' ', 2).first, self.class.sort_attributes end |
#sort_direction ⇒ Object
23 24 25 |
# File 'lib/search_object/plugin/sorting.rb', line 23 def sort_direction @sort_direction ||= Helper.ensure_included sort.to_s.split(' ', 2).last, %w[desc asc] end |
#sort_direction_for(attribute) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/search_object/plugin/sorting.rb', line 27 def sort_direction_for(attribute) if sort_attribute == attribute.to_s reverted_sort_direction else 'desc' end end |
#sort_params_for(attribute, options = {}) ⇒ Object
35 36 37 38 |
# File 'lib/search_object/plugin/sorting.rb', line 35 def sort_params_for(attribute, = {}) ['sort'] = "#{attribute} #{sort_direction_for(attribute)}" params end |