class PatternQueryHelper::Sorting
Public Class Methods
parse_sorting_params(sort, valid_columns)
click to toggle source
# File lib/pattern_query_helper/sorting.rb, line 3 def self.parse_sorting_params(sort, valid_columns) sort_sql = [] if sort sorts = sort.split(",") sorts.each_with_index do |sort, index| column = sort.split(":")[0] direction = sort.split(":")[1] modifier = sort.split(":")[2] raise ArgumentError.new("Sorting not allowed on column '#{column}'") unless valid_columns.include? column if direction == "desc" case PatternQueryHelper.active_record_adapter when "sqlite3" direction = "desc" else direction = "desc nulls last" end else direction = "asc" end case modifier when "lowercase" column = "lower(#{column})" end sort_sql << "#{column} #{direction}" end end sort_sql.join(", ") end
sort_active_record_query(active_record_call, sort_string)
click to toggle source
# File lib/pattern_query_helper/sorting.rb, line 36 def self.sort_active_record_query(active_record_call, sort_string) active_record_call.order(sort_string) end