Was Sie tun möchten, ist ein Array als einzelnes Argument an where
zu übergeben die sowohl die Abfrage als auch die dynamischen Werte enthält. Zum Beispiel:
where(["att_1 LIKE ? OR att_2 LIKE ?", "value1", "value2"])
Wenn ein Array als erstes und einziges Argument übergeben wird, wird das erste Element des Arrays als Vorlage behandelt. Die folgenden Array-Werte werden als dynamische Werte für die Abfragevorlage behandelt.
Für Ihr Beispiel, anstatt zwei separate Variablen queries
zu haben und query
, kombinieren Sie sie zu einer query
Variable:
# 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)
Dadurch können Sie die DB mit einer unbekannten Anzahl von Werten mit LIKE
abfragen .