app/models/concerns/searchable.rb
module Searchable
extend ActiveSupport::Concern
included do
include PgSearch::Model
include SearchCache
pg_search_scope :pg_search, ->(query) do
cached_votes_up_present = column_names.include?("cached_votes_up")
{
against: :ignored, # not used since using a tsvector_column
using: {
tsearch: { tsvector_column: "tsv", dictionary: SearchDictionarySelector.call, prefix: true }
},
ignoring: :accents,
ranked_by: "(:tsearch)",
order_within_rank: (cached_votes_up_present ? "#{table_name}.cached_votes_up DESC" : nil),
query: query
}
end
end
end