lib/pg_search/features/tsearch.rb in pg_search-0.7.4 vs lib/pg_search/features/tsearch.rb in pg_search-0.7.5

- old
+ new

@@ -52,29 +52,12 @@ tsquery_terms = query_terms.map { |term| tsquery_for_term(term) } tsquery_terms.join(options[:any_word] ? ' || ' : ' && ') end def tsdocument - tsdocument_terms = [] - - columns_to_use = options[:tsvector_column] ? - columns.select { |c| c.is_a?(PgSearch::Configuration::ForeignColumn) } : - columns - - if columns_to_use.present? - tsdocument_terms << columns_to_use.map do |search_column| - tsvector = Arel::Nodes::NamedFunction.new( - "to_tsvector", - [dictionary, Arel.sql(normalize(search_column.to_sql))] - ).to_sql - - if search_column.weight.nil? - tsvector - else - "setweight(#{tsvector}, #{connection.quote(search_column.weight)})" - end - end.join(" || ") + tsdocument_terms = (columns_to_use || []).map do |search_column| + column_to_tsvector(search_column) end if options[:tsvector_column] column_name = connection.quote_column_name(options[:tsvector_column]) tsdocument_terms << "#{quoted_table_name}.#{column_name}" @@ -104,9 +87,30 @@ options[:dictionary] || :simple end def arel_wrap(sql_string) Arel::Nodes::Grouping.new(Arel.sql(sql_string)) + end + + def columns_to_use + if options[:tsvector_column] + columns.select { |c| c.is_a?(PgSearch::Configuration::ForeignColumn) } + else + columns + end + end + + def column_to_tsvector(search_column) + tsvector = Arel::Nodes::NamedFunction.new( + "to_tsvector", + [dictionary, Arel.sql(normalize(search_column.to_sql))] + ).to_sql + + if search_column.weight.nil? + tsvector + else + "setweight(#{tsvector}, #{connection.quote(search_column.weight)})" + end end end end end