module Querifier::Queries::Order
Public Class Methods
included(klass)
click to toggle source
# File lib/querifier/queries/order.rb, line 55 def self.included(klass) klass.extend(ClassMethods) end
Public Instance Methods
collection()
click to toggle source
Calls superclass method
# File lib/querifier/queries/order.rb, line 4 def collection super order @collection end
method_missing(message, *args, &block)
click to toggle source
Calls superclass method
# File lib/querifier/queries/order.rb, line 45 def method_missing(message, *args, &block) return order_by(Regexp.last_match(1).to_sym, *args) if message.to_s =~ /order_by_(.*)/ # rubocop:disable Performance/RegexpMatch, Metrics/LineLength super end
order()
click to toggle source
# File lib/querifier/queries/order.rb, line 10 def order return self if @ordered if valid_sort? # TODO: Permit multiple orders option = order_params.keys.first direction = order_params.fetch(option, nil) send("order_by_#{option}", direction) else order_by_default end @ordered = true self end
order_by(option, direction)
click to toggle source
# File lib/querifier/queries/order.rb, line 28 def order_by(option, direction) @collection = @collection.order(option => direction) end
order_by_default()
click to toggle source
# File lib/querifier/queries/order.rb, line 24 def order_by_default order_by(*self.class.default_sort.to_a.flatten) end
order_params()
click to toggle source
# File lib/querifier/queries/order.rb, line 50 def order_params @order_params ||= params.fetch(Config.order_param, {}).select { |(k, _)| valid_option? k.to_sym } end
valid_option?(option)
click to toggle source
# File lib/querifier/queries/order.rb, line 41 def valid_option?(option) self.class.order_attributes.include?(option.to_sym) end
valid_sort?()
click to toggle source
# File lib/querifier/queries/order.rb, line 32 def valid_sort? option = order_params.keys.first direction = order_params.fetch(option, nil) option && direction && valid_option?(option) && %w[asc desc].include?(direction.to_s.downcase) end