module TheWhere::Like

Public Instance Methods

filter_like(params) click to toggle source
# File lib/the_where/like.rb, line 26
def filter_like(params)
  params.select do |k, _|
    k.end_with?('-like')
  end
end
like_scope(params) click to toggle source
# File lib/the_where/like.rb, line 4
def like_scope(params)
  where_string = []
  where_hash = {}

  params.select{ |k, _| k.end_with?('-like') }.each do |key, value|
    real_key = key.sub(/-like$/, '')
    agent_key = key.gsub(/[-\.]/, '_')

    where_string << "#{real_key} like :#{agent_key}"
    where_hash.merge! agent_key.to_sym => '%' + value.to_s + '%'
  end

  where_string = where_string.join ' AND '

  if where_string.present?
    condition = [where_string, where_hash]
    where(condition)
  else
    all
  end
end