Module: UserSortable
- Defined in:
- app/models/application_record.rb
Instance Method Summary collapse
-
#user_sort(term_opts, **field_mappings) ⇒ Object
Sort a collection according to a user selection, by mapping user selectable values to column names.
Instance Method Details
#user_sort(term_opts, **field_mappings) ⇒ Object
Sort a collection according to a user selection, by mapping user selectable values to column names. SQL injection safe.
95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'app/models/application_record.rb', line 95 def user_sort(term_opts, **field_mappings) default = term_opts[:default] || :created_at requested = term_opts[:term] direction = term_opts[:direction] || :desc if requested.nil? || field_mappings.exclude?(requested.to_sym) $active_search_param = default default.is_a?(Symbol) ? order(default => direction) : order(default) else requested_val = field_mappings[requested.to_sym] $active_search_param = requested_val requested_val.is_a?(Symbol) ? order(requested_val => direction) : order(requested_val) end end |