class PgSearch::Features::Feature

Attributes

all_columns[R]
model[R]
normalizer[R]
options[R]
query[R]

Public Class Methods

new(query, options, all_columns, model, normalizer) click to toggle source
# File lib/pg_search/features/feature.rb, line 15
def initialize(query, options, all_columns, model, normalizer)
  @query = query
  @options = (options || {}).assert_valid_keys(self.class.valid_options)
  @all_columns = all_columns
  @model = model
  @normalizer = normalizer
end
valid_options() click to toggle source
# File lib/pg_search/features/feature.rb, line 9
def self.valid_options
  %i[only sort_only]
end

Private Instance Methods

columns() click to toggle source
# File lib/pg_search/features/feature.rb, line 31
def columns
  if options[:only]
    all_columns.select do |column|
      Array.wrap(options[:only]).map(&:to_s).include? column.name
    end
  else
    all_columns
  end
end
document() click to toggle source
# File lib/pg_search/features/feature.rb, line 27
def document
  columns.map(&:to_sql).join(" || ' ' || ")
end
normalize(expression) click to toggle source
# File lib/pg_search/features/feature.rb, line 41
def normalize(expression)
  normalizer.add_normalization(expression)
end