class PgSearch::Configuration
Constants
- VALID_KEYS
- VALID_VALUES
Attributes
model[R]
options[R]
Public Class Methods
alias(*strings)
click to toggle source
# File lib/pg_search/configuration.rb, line 19 def alias(*strings) name = Array(strings).compact.join("_") # By default, PostgreSQL limits names to 32 characters, so we hash and limit to 32 characters. "pg_search_#{Digest::SHA2.hexdigest(name)}".first(32) end
new(options, model)
click to toggle source
# File lib/pg_search/configuration.rb, line 11 def initialize(options, model) @options = default_options.merge(options) @model = model assert_valid_options(@options) end
Public Instance Methods
associated_columns()
click to toggle source
# File lib/pg_search/configuration.rb, line 46 def associated_columns associations.map(&:columns).flatten end
associations()
click to toggle source
# File lib/pg_search/configuration.rb, line 38 def associations return [] unless options[:associated_against] options[:associated_against].map do |association, column_names| Association.new(model, association, column_names) end.flatten end
columns()
click to toggle source
# File lib/pg_search/configuration.rb, line 26 def columns regular_columns + associated_columns end
feature_options()
click to toggle source
# File lib/pg_search/configuration.rb, line 66 def feature_options @feature_options ||= {}.tap do |hash| features.map do |feature_name, feature_options| hash[feature_name] = feature_options end end end
features()
click to toggle source
# File lib/pg_search/configuration.rb, line 62 def features Array(options[:using]) end
ignore()
click to toggle source
# File lib/pg_search/configuration.rb, line 54 def ignore Array(options[:ignoring]) end
order_within_rank()
click to toggle source
# File lib/pg_search/configuration.rb, line 74 def order_within_rank options[:order_within_rank] end
query()
click to toggle source
# File lib/pg_search/configuration.rb, line 50 def query options[:query].to_s end
ranking_sql()
click to toggle source
# File lib/pg_search/configuration.rb, line 58 def ranking_sql options[:ranked_by] end
regular_columns()
click to toggle source
# File lib/pg_search/configuration.rb, line 30 def regular_columns return [] unless options[:against] Array(options[:against]).map do |column_name, weight| Column.new(column_name, weight, model) end end
Private Instance Methods
assert_valid_options(options)
click to toggle source
# File lib/pg_search/configuration.rb, line 94 def assert_valid_options(options) unless options[:against] || options[:associated_against] || using_tsvector_column?(options[:using]) raise( ArgumentError, "the search scope #{@name} must have :against, :associated_against, or :tsvector_column in its options" ) end options.assert_valid_keys(VALID_KEYS) VALID_VALUES.each do |key, values_for_key| Array(options[key]).each do |value| raise ArgumentError, ":#{key} cannot accept #{value}" unless values_for_key.include?(value) end end end
default_options()
click to toggle source
# File lib/pg_search/configuration.rb, line 82 def default_options {using: :tsearch} end
using_tsvector_column?(options)
click to toggle source
# File lib/pg_search/configuration.rb, line 111 def using_tsvector_column?(options) return unless options.is_a?(Hash) options.dig(:dmetaphone, :tsvector_column).present? || options.dig(:tsearch, :tsvector_column).present? end