module Suggest

Constants

VERSION

Public Instance Methods

suggest(params) click to toggle source
# File lib/suggest.rb, line 4
def suggest params
  column_types = self.column_types.values.map(&:type)
  column_names = self.column_names
  columns = column_names.zip(column_types).to_h
  where_clauses = []
  params.each do |key, value|
    next if !columns.keys.include? key or value.nil?
    where_clauses << comp_exp(value,columns[key],key)
  end
  where_query = where_clauses.join(' AND ')
  where(where_query)
end

Private Instance Methods

comp_exp(value, type, name) click to toggle source
# File lib/suggest.rb, line 19
def comp_exp value, type, name
  case type.to_s
  when 'string'
    comp_exp_str(value, name)
  when 'integer'
    comp_exp_num(value, name)
  when 'float'
    comp_exp_num(value, name)
  else
    ""
  end
end
comp_exp_num(value, name) click to toggle source
# File lib/suggest.rb, line 36
def comp_exp_num value, name
  if /^[^\d]{1,2}/.match(value.to_s).nil?
    "#{name} = #{value}"
  else
    "#{name} #{value}"
  end
end
comp_exp_str(value, name) click to toggle source
# File lib/suggest.rb, line 32
def comp_exp_str value, name
  "#{name} ilike '%#{value.downcase.gsub(/[\s,]+/,'%')}%'"
end