Построение динамического запроса SearchKick вызывает синтаксическую ошибку

Если я выполню этот запрос:

self.send("search", where: {geo_location: { near:[ params[:latitude], params[:longitude] ]}}, boost_by: {luxury_shopper: {factor: 80}} && {movie_goer: {factor: 20}})

все отлично работает, и я получаю свой результат. Но если я выполню этот запрос

booster = "boost_by: {luxury_shopper: {factor: 80}} && {movie_goer: {factor: 20}}"

self.send("search", where: {geo_location: { near:[ params[:latitude], params[:longitude] ]}}, booster)

я получил SyntaxError: unexpected ')', expecting =>, но я не могу понять, почему, или что более важно, как написать этот запрос. Вспомогательная часть является динамичной. Я получаю произвольное количество атрибутов для "увеличения по" и вставляю их в запрос.

1 ответ

Решение

Вы передаете строку, где searchkick ожидает хеш, и я не уверен, что он автоматически объединяет параметры, следующее должно сделать работу:

booster = { boost_by: { luxury_shopper: {factor: 80}, movie_goer: {factor: 20} } }
self.send("search", {where: {geo_location: { near:[ params[:latitude], params[:longitude] ]}}}.merge(booster))
Другие вопросы по тегам