Sha256: 342f1b7d7e2acae5604dbc7ce33621e7d5d7d54857822518aaf999e30886b507
Contents?: true
Size: 794 Bytes
Versions: 123
Compression:
Stored size: 794 Bytes
Contents
module Daddy module Utils class SqlUtils def self.escape_search(str) str.gsub(/\\/, '\\\\\\\\').gsub(/%/, '\%').gsub(/_/, '\_') end def self.like(columns, keywords) target_columns = columns.is_a?(Array) ? columns : [columns] sql = [] sql[0] = '(' keywords.gsub(/ /, ' ').split.each_with_index do |s, i| like = SqlUtils.escape_search(s) sql[0] << ' or ' if i > 0 sql[0] << '(' target_columns.each_with_index do |column, j| sql[0] << ' or ' if j > 0 sql[0] << "#{column} like ?" sql << '%' + like + '%' end sql[0] << ')' end sql[0] << ')' sql end end end end
Version data entries
123 entries across 123 versions & 1 rubygems