module Orderpriority
Constants
- VERSION
Public Instance Methods
is_priority_order_args(args)
click to toggle source
# File lib/orderpriority.rb, line 30 def is_priority_order_args(args) is_priority_order = true; args.each do |arg| next unless arg.is_a?(Hash) arg.each do |_key, value| unless self.class.const_get(:VALID_DIRECTIONS).include?(value) is_priority_order&&= true; else is_priority_order = false; end end end return is_priority_order end
priority_order(*args)
click to toggle source
# File lib/orderpriority.rb, line 5 def priority_order(*args) check_if_method_has_arguments!(:priority_order, args) if is_priority_order_args(args) ret = "CASE" index = 1 args.each do |arg| arg.each do |k,v| k = k.to_s unless klass.column_names.include?(k) raise ArgumentError, "#{k} is not a valid column for #{table.name}" end k="#{table.name}.#{table[k].name}" ret << " WHEN #{k} = '#{v}' then #{index}" ret << " WHEN #{k} like '#{v}%' then #{index += 1}" ret << " WHEN #{k} like '%#{v}' then #{index += 2}" ret << " WHEN #{k} like '%#{v}%' then #{index += 3}" index+=1 end end ret << " ELSE #{index} END" args = [ret] end spawn.order!(*args) end