Module: Alchemy::PgSearch

Extended by:
Config
Defined in:
lib/alchemy-pg_search.rb,
lib/alchemy/pg_search/config.rb,
lib/alchemy/pg_search/engine.rb,
lib/alchemy/pg_search/version.rb,
app/jobs/alchemy/pg_search/index_page_job.rb,
app/helpers/alchemy/pg_search/search_helper.rb,
lib/generators/alchemy/pg_search/views/views_generator.rb,
lib/generators/alchemy/pg_search/install/install_generator.rb

Defined Under Namespace

Modules: Config, PageExtension, PgSearchDocumentExtension, SearchHelper Classes: Engine, IndexPageJob, InstallGenerator, ViewsGenerator

Constant Summary collapse

VERSION =
"6.1.0"

Class Method Summary collapse

Methods included from Config

config, config=

Class Method Details

.rebuild(clean_up: true, transactional: true) ⇒ Object

Reindex all supported Alchemy pages



21
22
23
24
25
26
27
# File 'lib/alchemy-pg_search.rb', line 21

def self.rebuild(clean_up: true, transactional: true)
  ::PgSearch::Multisearch.rebuild(
    Alchemy::Page,
    clean_up: clean_up,
    transactional: transactional
  )
end

.search(query, ability: nil) ⇒ ActiveRecord::Relation

search for page results

Parameters:

  • query (string)
  • ability (nil|CanCan::Ability) (defaults to: nil)

Returns:

  • (ActiveRecord::Relation)


35
36
37
38
39
40
41
42
43
44
# File 'lib/alchemy-pg_search.rb', line 35

def self.search(query, ability: nil)
  query = ::PgSearch.multisearch(query).includes(:searchable)

  if ability
    inner_ability_select = Alchemy::Page.select(:id).merge(Alchemy::Page.accessible_by(ability, :read))
    query = query.where("page_id IS NULL OR page_id IN (#{inner_ability_select.to_sql})")
  end

  query
end