簡體   English   中英

has_and_belongs_to_many的Searchkick聚合

[英]Searchkick aggregations for has_and_belongs_to_many

我有一個Rails 5應用程序,我正在嘗試進行聚合搜索has_and_belongs_to_many關聯。

這是我到目前為止的代碼:

event.rb:

class Event < ApplicationRecord
  searchkick text_start: [:title]

  has_and_belongs_to_many :services
  has_and_belongs_to_many :sectors

  def search_data
    atributes.merge(
      title: title,
      description: description,
      sector_name: sectors.map(&:name),
      service_name: services.map(&:name)
    )
  end

end

events_controller.rb:

def index
  query = params[:j].presence || "*"
  conditions = {}
  conditions[:sector] = params[:sector] if params[:sector].present?
  conditions[:service] = params[:service] if params[:service].present?
  conditions[:date] = params[:date] if params[:date].present?
  @events = Event.search query, where: conditions, aggs: [:sector, :service, :date], order: {created_at: {order: "desc"}}, page: params[:page], per_page: 10
end

當我在控制台中調用Event.reindex時,我希望顯示該扇區和服務已被索引,但無法正常工作。

老實說,我已經迷路了,到處亂逛,所以任何幫助將不勝感激。

這是最終為我工作的代碼:

event.rb:

def index
    query = params[:j].presence || "*"
    conditions = {start_date: {"gte": "now/d"}}
    conditions[:sector_name] = params[:sector_name] if params[:sector_name].present?
    conditions[:service_name] = params[:service_name] if params[:service_name].present?
    conditions[:start_date] = params[:start_date] if params[:start_date].present?
    @events = Event.search query, where: conditions, aggs: [:sector_name, :service_name], order: {start_date: {order: "asc", unmapped_type: "long"}}, page: params[:page], per_page: 10
end

events_controller.rb:

def search_data
  {
    title: title,
    location: location,
    description: description,
    start_date: start_date,
    sector_name: sectors.map(&:name),
    service_name: services.map(&:name)
  }
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM