diff --git a/lib/pg_search/features/feature.rb b/lib/pg_search/features/feature.rb index 5d3b4087..941b1fd5 100644 --- a/lib/pg_search/features/feature.rb +++ b/lib/pg_search/features/feature.rb @@ -3,12 +3,6 @@ module Features class Feature delegate :connection, :quoted_table_name, :to => :'@model' - begin - include ActiveRecord::Sanitization::ClassMethods - rescue NameError - delegate :sanitize_sql_array, :to => :'@model' - end - def initialize(query, options, columns, model, normalizer) @query = query @options = options || {} diff --git a/lib/pg_search/features/tsearch.rb b/lib/pg_search/features/tsearch.rb index e7223d21..ce9e655a 100644 --- a/lib/pg_search/features/tsearch.rb +++ b/lib/pg_search/features/tsearch.rb @@ -15,20 +15,16 @@ def initialize(*args) def conditions Arel::Nodes::Grouping.new( - Arel::Nodes::InfixOperation.new("@@", arel_wrap(tsdocument, interpolations), arel_wrap(tsquery, interpolations)) + Arel::Nodes::InfixOperation.new("@@", arel_wrap(tsdocument), arel_wrap(tsquery)) ) end def rank - arel_wrap(tsearch_rank, interpolations) + arel_wrap(tsearch_rank) end private - def interpolations - {:query => query.to_s, :dictionary => dictionary.to_s} - end - DISALLOWED_TSQUERY_CHARACTERS = /['?\\:]/ def tsquery_for_term(term) @@ -45,7 +41,10 @@ def tsquery_for_term(term) (connection.quote(':*') if options[:prefix]) ].compact.join(" || ") - "to_tsquery(:dictionary, #{tsquery_sql})" + Arel::Nodes::NamedFunction.new( + "to_tsquery", + [dictionary, Arel.sql(tsquery_sql)] + ).to_sql end def tsquery @@ -61,7 +60,11 @@ def tsdocument "#{quoted_table_name}.#{column_name}" else columns.map do |search_column| - tsvector = "to_tsvector(:dictionary, #{normalize(search_column.to_sql)})" + tsvector = Arel::Nodes::NamedFunction.new( + "to_tsvector", + [dictionary, Arel.sql(normalize(search_column.to_sql))] + ).to_sql + if search_column.weight.nil? tsvector else @@ -92,12 +95,8 @@ def dictionary options[:dictionary] || :simple end - def arel_wrap(sql_string, interpolations = {}) - Arel::Nodes::Grouping.new( - Arel.sql( - sanitize_sql_array([sql_string, interpolations]) - ) - ) + def arel_wrap(sql_string) + Arel::Nodes::Grouping.new(Arel.sql(sql_string)) end end end