Saqueador, busque registros que tengan todos los registros relacionados
Tengo un modelo de receta que tiene muchos ingredientes y cada ingrediente pertenece a un artículo. En mi formulario de búsqueda avanzada, me gustaría que un usuario seleccione varios ingredientes y permita que Ransack encuentre una receta que contenga todos los ingredientes seleccionados por el usuario.
Intenté el siguiente campo de búsqueda:
= f.collection_select(:ingredients_item_id_in, Item.all, :id, :name, {}, {multiple: true})
Pero lógicamente, esto da como resultado que se muestren todas las recetas que contienen cualquiera de los ingredientes seleccionados.
cambiando:ingredients_item_id_in
a:ingredients_item_id_in_all
da como resultado una consulta incorrecta ya que un registro no puede contener múltiples valores de item_id.
¿Alguna idea sobre cómo crear este parámetro de búsqueda dentro de Ransack, o debería crear una subconsulta para esto?
A petición, mi método de controlador para la búsqueda:
def search
@q = Recipe.ransack(params[:q])
@recipes = @q.,result(distinct: true).include_related_models.published
end