आप जो करना चाहते हैं वह where
. के लिए एकल तर्क के रूप में एक सरणी पास करना है जिसमें क्वेरी और डायनेमिक मान दोनों शामिल हैं। उदाहरण के लिए:
where(["att_1 LIKE ? OR att_2 LIKE ?", "value1", "value2"])
यदि किसी सरणी को पहले और एकमात्र तर्क के रूप में पारित किया जाता है, तो सरणी के पहले तत्व को टेम्पलेट के रूप में माना जाता है। निम्न सरणी मानों को क्वेरी टेम्पलेट के लिए गतिशील मान के रूप में माना जाता है।
आपके उदाहरण के लिए, दो अलग-अलग चर होने के बजाय queries
और query
, उन्हें एक query
. में संयोजित करें चर:
# 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)
यह आपको LIKE
. का उपयोग करके अज्ञात संख्या में मानों के साथ DB को क्वेरी करने की अनुमति देगा ।