Я использую Searchkick на моей модели Event в моем приложении.Я пытаюсь искать результаты только там, где статус: "опубликован".Я тестирую это в консоли и до сих пор знаю, что есть событие с "Викториной".Я получаю один результат обратно.Я могу проверить, чтобы увидеть результаты, показывающие этот статус: «черновик».Однако, когда я пытаюсь записать этот запрос в результат, чтобы подтвердить подсчет результатов, он просто не принимает во внимание статус: «черновик» и возвращает мне 1 результат.Ниже приведен код, который я использую, и результаты поиска.Согласно документации я не вижу, где я иду не так.
results = Event.search "quiz"
ответ:
=> #<Searchkick::Results:0x00007feb0a2d57d8 @klass=Event(id: integer, title: string, content: text, category_id: integer, user_id: integer, created_at: datetime, updated_at: datetime, slug: string, status: integer, featured: boolean, recommended: boolean, excerpt: text, sold_out: boolean, ticketsolve_url: string, meta_title: string, meta_description: text, ticketsolve_event_id: string, featured_video: string, show_video: boolean, author_name: string, expiry: date, manual_seo: boolean, price_details: text, remove_booking_button: boolean, tags: string), @response={"took"=>4, "timed_out"=>false, "_shards"=>{"total"=>5, "successful"=>5, "skipped"=>0, "failed"=>0}, "hits"=>{"total"=>1, "max_score"=>41.952984, "hits"=>[{"_index"=>"events_development_20181122112141928", "_type"=>"event", "_id"=>"3", "_score"=>41.952984}]}}, @options={:page=>1, :per_page=>10000, :padding=>0, :load=>true, :includes=>nil, :model_includes=>nil, :json=>false, :match_suffix=>"analyzed", :highlight=>nil, :highlighted_fields=>[], :misspellings=>true, :term=>"quiz", :scope_results=>nil, :index_name=>nil, :total_entries=>nil}>
results.total_count равно 1, что является правильным.
результаты. [0]показывает это событие.
ответ:
=> #<Event id: 3, title: "It's A Table Quiz! 2018", content: "<!DOCTYPE html>\r\n<html>\r\n<head>\r\n</head>\r\n<body>\r\n...", category_id: 10, user_id: 2, created_at: "2018-09-20 12:57:01", updated_at: "2018-11-07 19:15:29", slug: "it-s-a-table-quiz-2018", status: "draft", featured: false, recommended: false, excerpt: "On October 4th get yourself and three of your smar...", sold_out: false, ticketsolve_url: "https://firstfortnight.ticketsolve.com/shows/87359...", meta_title: "First Fortnight Event Title", meta_description: "First Fortnight Event Description", ticketsolve_event_id: "1111111", featured_video: "", show_video: false, author_name: nil, expiry: "2019-01-18", manual_seo: false, price_details: nil, remove_booking_button: false, tags: nil>
Мы видим статус «черновик».Так что теперь я собираюсь попробовать поиск с помощью Викторины, а также, где статус равен «черновик», чтобы попытаться получить результат 1.
results = Event.search "quiz", where: {status: "draft"}
счетчик результатов равен 0.
Iтакже пробовал другие варианты статуса: 1 или статус:: черновик, но они не дают никаких результатов.Плюс, видя результаты выше, я предполагаю, что правильный поиск - это где: {status: "draft"} в любом случае.
Я добавлю свой код модели на всякий случай, если я сделал что-то глупое.Любая помощь будет большой благодарностью.
модель:
class Event < ApplicationRecord
extend FriendlyId
# Search kick with callback so that when data is committed search runs reindex
searchkick callbacks: :async
# Controlled data that is indexed. Allows the user to find posts by author.
def search_data
{
title: title,
stats: status,
content: content,
excerpt: excerpt,
tags: tags,
author_name: user.name
}
end
enum status: {draft: 0, published: 1}
end