[英]Using pg_search for multiple models
現在我有三個模型:餐廳,類別和項目。 所有這些表都有name的屬性。 我想在可以訪問所有3的主頁面上設置搜索。搜索將在搜索時返回餐館名稱,類別名稱和/或項目名稱。
我在Rails 4應用程序中使用pg_search。 https://github.com/Casecommons/pg_search
到目前為止,我已經捆綁了gem,設置了多搜索並運行了遷移。 我的模型目前看起來如下:
楷模
class Restaurant < ActiveRecord::Base
has_many :items
validates :name, presence: true
validates :gg, presence: true
include PgSearch
multisearchable against: :name
end
class Category < ActiveRecord::Base
has_many :items
validates :name, presence: true
validates :gg, presence: true
include PgSearch
multisearchable against: :name
end
class Item < ActiveRecord::Base
belongs_to :restaurants
belongs_to :categories
validates :name, presence: true
validates :gg, presence: true
include PgSearch
multisearchable against: :name
end
查看搜索框
<%= form_tag restaurants_path, method: :get do %>
<%= text_field_tag :query, params[:query], class: "search-box" %>
<%= submit_tag "Search", name: nil, class: "btn btn-search" %>
<% end %>
餐館控制員
class RestaurantsController < ApplicationController
def index
@restaurants = PgSearch.multisearch( params[:q] )
end
end
質詢
運行遷移時,將創建一個名為pg_search_documents的新表。 這是pg_search將查詢的表。
很可能您在該表中沒有任何數據時遇到問題。 文檔說“如果此模型已有現有記錄,則需要重新索引此模型以將現有記錄放入pg_search_documents表中。請參閱下面的重建任務。”
您想參考文檔的這一部分: https : //github.com/Casecommons/pg_search#rebuilding-search-documents-for-a-given-class
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.