Я вручную вызываю re index для ассоциаций, чтобы они были актуальными, как предписано docs .
ОДНАКО, в моей среде тестирования вызовы переиндексации выдают ошибку. На CI ошибка понятный порт 9200 не работает, так как ES не работает. Локально ошибка выглядит следующим образом, показывая, что документ не существует.
У меня есть прописанное Searchkick.disable_callbacks
в моем test_helper
Установка:
class Parent < ApplicationRecord
belongs_to :client
searchkick
def search_data
{ name }.merge(**client_data)
end
def client_data
{ market_id: client.market_id }
end
end
class Client < ApplicationRecord
has_many :parents
after_save :reindex_parents
def reindex_parents
parents.reindex(:client_data) # <-- ERROR raised here without `unless Rails.env.test?` guard
end
end
Ошибка:
TestClass#test_name:
Searchkick::ImportError: {"type"=>"document_missing_exception", "reason"=>"[model][395824130]: document missing", "index_uuid"=>"5UOKtvfvR52x76Nf5njMBQ", "shard"=>"0", "index"=>"students_test"} on item with id '395824130' ....
Я могу избежать этой проблемы, охраняя вызов reindex_parents
с помощью unless Rails.env.test?
, но кажется, что должен быть лучшим способом
Я что-то упустил?
Есть идеи?