Skip to content

Commit 0aa654c

Browse files
committed
Merge pull request risuiowa#52 from sethk/sane_like
Sanitize the LIKE expression.
2 parents 3438cdc + fd8856b commit 0aa654c

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

lib/rails-jquery-autocomplete/orm/active_record.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,13 @@ def get_autocomplete_where_clause(model, term, method, options)
5353
is_case_sensitive_search = options[:case_sensitive]
5454
like_clause = (postgres?(model) && !is_case_sensitive_search ? 'ILIKE' : 'LIKE')
5555
column_transform = is_case_sensitive_search ? '' : 'LOWER'
56+
term = "#{(is_full_search ? '%' : '')}#{term.gsub(/([_%\\])/, '\\\\\1')}%"
5657
if options[:hstore]
57-
["#{column_transform}(#{table_name}.#{method} -> '#{options[:hstore][:key]}') LIKE #{column_transform}(?)", "#{(is_full_search ? '%' : '')}#{term}%"]
58+
["#{column_transform}(#{table_name}.#{method} -> '#{options[:hstore][:key]}') LIKE #{column_transform}(?)", term]
5859
elsif sqlite?
59-
["#{column_transform}(#{method}) #{like_clause} #{column_transform}(?)", "#{(is_full_search ? '%' : '')}#{term}%"]
60+
["#{column_transform}(#{method}) #{like_clause} #{column_transform}(?)", term]
6061
else
61-
["#{column_transform}(#{table_name}.#{method}) #{like_clause} #{column_transform}(?)", "#{(is_full_search ? '%' : '')}#{term}%"]
62+
["#{column_transform}(#{table_name}.#{method}) #{like_clause} #{column_transform}(?)", term]
6263
end
6364
end
6465

0 commit comments

Comments
 (0)