Ransack, finde einen Datensatz mit allen zugehörigen Datensätzen
Ich habe ein Rezeptmodell, das viele Zutaten enthält, und jede Zutat gehört zu einem Gegenstand. In meinem erweiterten Suchformular möchte ich, dass ein Benutzer mehrere Zutaten auswählt und Ransack ein Rezept findet, das alle vom Benutzer ausgewählten Zutaten enthält.
Ich habe folgendes Suchfeld ausprobiert:
= f.collection_select(:ingredients_item_id_in, Item.all, :id, :name, {}, {multiple: true})
Aber logischerweise werden alle Rezepte angezeigt, die eine der ausgewählten Zutaten enthalten.
Ändern:ingredients_item_id_in
zu:ingredients_item_id_in_all
führt zu einer falschen Abfrage, da ein Datensatz nicht mehrere Werte von item_id enthalten kann.
Haben Sie Ideen zum Erstellen dieses Suchparameters in Ransack oder sollte ich dafür eine Unterabfrage erstellen?
Auf Anfrage, meine Controller-Methode für die Suche:
def search
@q = Recipe.ransack(params[:q])
@recipes = @q.,result(distinct: true).include_related_models.published
end