Sha256: bdca1ee48df8740a5ca94e4480e08ca66b2f7fa733a31859ef2afc0a50791f76

Contents?: true

Size: 1.03 KB

Versions: 6

Compression:

Stored size: 1.03 KB

Contents

require 'logger'

module PgSearch
  class Document < ActiveRecord::Base
    include PgSearch

    self.table_name = 'pg_search_documents'
    belongs_to :searchable, :polymorphic => true

    before_validation :update_content,
                      :unless => Proc.new { |doc| doc.searchable.nil? }

    # The logger might not have loaded yet.
    # https://github.com/Casecommons/pg_search/issues/26
    def self.logger
      super || Logger.new(STDERR)
    end

    pg_search_scope :search, lambda { |*args|
      options = if PgSearch.multisearch_options.respond_to?(:call)
                  PgSearch.multisearch_options.call(*args)
                else
                  {:query => args.first}.merge(PgSearch.multisearch_options)
                end

      {:against => :content}.merge(options)
    }

    private

    def update_content
      methods = Array(searchable.pg_search_multisearchable_options[:against])
      searchable_text = methods.map { |symbol| searchable.send(symbol) }.join(" ")
      self.content = searchable_text
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
pg_search-1.0.4 lib/pg_search/document.rb
pg_search-1.0.3 lib/pg_search/document.rb
pg_search-1.0.2 lib/pg_search/document.rb
pg_search-1.0.1 lib/pg_search/document.rb
pg_search-1.0.0 lib/pg_search/document.rb
pg_search-0.7.9 lib/pg_search/document.rb