Những gì bạn muốn làm là chuyển một mảng dưới dạng một đối số duy nhất đến where
chứa cả truy vấn VÀ các giá trị động. Ví dụ:
where(["att_1 LIKE ? OR att_2 LIKE ?", "value1", "value2"])
Nếu một mảng được chuyển làm đối số đầu tiên và duy nhất, thì phần tử đầu tiên của mảng được coi như một mẫu. Các giá trị mảng sau được coi là giá trị động cho mẫu truy vấn.
Đối với ví dụ của bạn, thay vì có hai biến riêng biệt queries
và queries
, kết hợp chúng thành một queries
biến:
# 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)
Điều này sẽ cho phép bạn truy vấn DB với một số lượng giá trị không xác định bằng cách sử dụng LIKE
.