From 31927b54d7682e0e9ac39ae78a59a656ef2a406c Mon Sep 17 00:00:00 2001 From: albert Date: Wed, 6 Mar 2013 01:39:25 -0500 Subject: [PATCH] bug fixes --- app/logical/post_query_builder.rb | 8 ++++++-- app/models/post.rb | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/logical/post_query_builder.rb b/app/logical/post_query_builder.rb index 719faef88..49018c7a5 100644 --- a/app/logical/post_query_builder.rb +++ b/app/logical/post_query_builder.rb @@ -1,6 +1,11 @@ class PostQueryBuilder attr_accessor :query_string, :has_constraints + def self.escape_string_for_tsquery(token) + escaped_token = token.gsub(/\\|'/, '\0\0\0\0').gsub("?", "\\\\77").gsub("%", "\\\\37") + "''" + escaped_token + "''" + end + def initialize(query_string) @query_string = query_string @has_constraint = false @@ -48,8 +53,7 @@ class PostQueryBuilder def escape_string_for_tsquery(array) array.map do |token| - escaped_token = token.gsub(/\\|'/, '\0\0\0\0').gsub("?", "\\\\77").gsub("%", "\\\\37") - "''" + escaped_token + "''" + PostQueryBuilder.escape_string_for_tsquery(token) end end diff --git a/app/models/post.rb b/app/models/post.rb index c7d8a23ff..3363b4816 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -938,8 +938,8 @@ class Post < ActiveRecord::Base end def raw_tag_match(tag) - tag = tag.gsub("(", '\\\\\\\\(') - where("posts.tag_index @@ to_tsquery('danbooru', E?)", tag) + tag = PostQueryBuilder.escape_string_for_tsquery(tag) + where("posts.tag_index @@ to_tsquery('danbooru', E'" + tag + "')") end def tag_match(query)