У меня есть модель рецепта, в которой есть много ингредиентов, и каждый ингредиент принадлежит предмету. В моей форме расширенного поиска я хочу, чтобы пользователь выбирал несколько ингредиентов, а Ransack мог найти рецепт, содержащий все ингредиенты, выбранные пользователем.
Я попробовал следующее поле поиска:
= f.collection_select(:ingredients_item_id_in, Item.all, :id, :name, {}, {multiple: true})
Но логически это приводит к тому, что отображаются все рецепты, содержащие любой из выбранных ингредиентов.
изменение :ingredients_item_id_in
на :ingredients_item_id_in_all
приводит к неправильному запросу, поскольку одна запись не может содержать несколько значений item_id.
Любые идеи по созданию этого параметра поиска в Ransack, или мне следует создать для этого подзапрос?
По запросу мой метод контроллера для поиска:
def search
@q = Recipe.ransack(params[:q])
@recipes = @q.result(distinct: true).include_related_models.published
end