Vad du vill göra är att skicka en array som ett enda argument till where
som innehåller både frågan OCH de dynamiska värdena. Till exempel:
where(["att_1 LIKE ? OR att_2 LIKE ?", "value1", "value2"])
Om en array skickas som det första och enda argumentet, behandlas det första elementet i arrayen som en mall. Följande matrisvärden behandlas som de dynamiska värdena för frågemallen.
För ditt exempel, istället för att ha två separata variabler queries
och query
, kombinera dem till en query
variabel:
# A single array with the query AND values
query = ["hobby LIKE ? OR (gender LIKE ? AND hobby LIKE ?)", "skiing", "male", "jogging"]
# Run the `where` with a single array as the argument
YourModel.where(query)
Detta gör att du kan fråga DB med ett okänt antal värden med LIKE
.