From cf2250a17f58deb49d8607073ef014098407fc7e Mon Sep 17 00:00:00 2001 From: albert Date: Tue, 26 Feb 2013 22:56:16 -0800 Subject: [PATCH] fixes #638 --- app/models/artist.rb | 3 ++- config/initializers/core_extensions.rb | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/models/artist.rb b/app/models/artist.rb index b9dee6791..2eff57b74 100644 --- a/app/models/artist.rb +++ b/app/models/artist.rb @@ -225,7 +225,8 @@ class Artist < ActiveRecord::Base def any_name_matches(name) stripped_name = normalize_name(name).to_escaped_for_sql_like - where("(name LIKE ? ESCAPE E'\\\\' OR other_names_index @@ to_tsquery('danbooru', ?))", stripped_name, normalize_name(name)) + name_for_tsquery = normalize_name(name).gsub(/\(/, "\\(").gsub(/\)/, "\\)") + where("(name LIKE ? ESCAPE E'\\\\' OR other_names_index @@ to_tsquery('danbooru', ?))", stripped_name, name_for_tsquery) end def search(params) diff --git a/config/initializers/core_extensions.rb b/config/initializers/core_extensions.rb index 88dfdbfdb..79cb8eb0d 100644 --- a/config/initializers/core_extensions.rb +++ b/config/initializers/core_extensions.rb @@ -2,7 +2,7 @@ module Danbooru module Extensions module String def to_escaped_for_sql_like - return self.gsub(/\\/, '\0\0').gsub(/%/, '\\%').gsub(/_/, '\\_').gsub(/\*/, '%') + return self.gsub(/\\/, '\0\0').gsub(/(%|_)/, '\\\\\\1').gsub(/_/, '\\_').gsub(/\*/, '%') end def to_escaped_js