Module: PgSearch::Multisearch
- Defined in:
- lib/pg_search/multisearch.rb
Constant Summary collapse
- REBUILD_SQL_TEMPLATE =
<<-SQL INSERT INTO :documents_table (searchable_type, searchable_id, content) SELECT :model_name AS searchable_type, :model_table.id AS searchable_id, ( :content_expressions ) AS content FROM :model_table SQL
Class Method Summary collapse
Class Method Details
.rebuild(model) ⇒ Object
14 15 16 17 18 19 |
# File 'lib/pg_search/multisearch.rb', line 14 def rebuild(model) model.transaction do PgSearch::Document.where(:searchable_type => model.name).delete_all model.connection.execute(rebuild_sql(model)) end end |
.rebuild_sql(model) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/pg_search/multisearch.rb', line 21 def rebuild_sql(model) connection = model.connection columns = Array.wrap( model.[:against] ) content_expressions = columns.map do |column| %Q{coalesce(:model_table.#{column}, '')} end.join(" || ' ' || ") REBUILD_SQL_TEMPLATE.gsub( ":content_expressions", content_expressions ).gsub( ":model_name", connection.quote(model.name) ).gsub( ":model_table", model.quoted_table_name ).gsub( ":documents_table", PgSearch::Document.quoted_table_name ) end |