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

Respuestas a la pregunta(1)

Su respuesta a la pregunta