Sha256: f90fab7958e11deceb1cc6bd38e0e06a224f42f8789a4f672f47b233b4106954

Contents?: true

Size: 721 Bytes

Versions: 4

Compression:

Stored size: 721 Bytes

Contents

# Enable Postgresql full text indexing.
#
module Alchemy::PgSearch::PageExtension
  def self.prepended(base)
    base.include PgSearch::Model
    base.after_save :remove_unpublished_page
    base.multisearchable(
      against: [
        :meta_description,
        :meta_keywords,
        :name,
      ],
      additional_attributes: ->(page) { { page_id: page.id } },
      if: :searchable?,
    )
  end

  def searchable?
    (definition.key?(:searchable) ? definition[:searchable] : true) &&
      searchable && public? && !layoutpage?
  end

  private

  def remove_unpublished_page
    Alchemy::PgSearch::Search.remove_page(self) unless searchable?
  end
end

Alchemy::Page.prepend(Alchemy::PgSearch::PageExtension)

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
alchemy-pg_search-5.2.0 app/extensions/alchemy/pg_search/page_extension.rb
alchemy-pg_search-5.1.0 app/extensions/alchemy/pg_search/page_extension.rb
alchemy-pg_search-5.0.0 app/extensions/alchemy/pg_search/page_extension.rb
alchemy-pg_search-4.2.0 app/extensions/alchemy/pg_search/page_extension.rb