Как искать только одобренные сообщения, используя гем ps_search для Rails 5 - PullRequest
0 голосов
/ 28 июня 2018

Я делаю мульти поиск для таблиц Post и Website. У меня есть is_approved boolean для всех записей. В настоящее время pg_search находит все сообщения, но мне нужно показывать только сообщения, для которых is_approved == true.

Я знаю, что могу проверить в цикле состояние "если" для поля is_approved, но это звучит не очень эффективно. Я считаю, что у pg_search есть лучший способ ограничения.

Приветствия


_header.html.erb

<%= form_tag search_index_path, method: :get do %>
    <%= text_field_tag :query, params[:query], placeholder: "Search" %>
<% end %>

search_controller.rb

class SearchController < ApplicationController

  def index
    @pg_search_result = PgSearch.multisearch(params[:query])
  end

end

pg_search.rb

PgSearch.multisearch_options = {
  using: {
    tsearch:  { dictionary: 'english' }
  }
}

post.rb

class Post < ApplicationRecord

  include PgSearch
  multisearchable :against => :title

website.rb

class Website < ApplicationRecord

  include PgSearch
  multisearchable :against => [:title, :website_url]

1 Ответ

0 голосов
/ 27 ноября 2018

Попробуйте использовать default_scope в требуемой модели. Например,

class Post < ApplicationRecord
  include PgSearch
  default_scope { where(is_approved: true)}
  multisearchable :against => :title
...