Mô hình có hai thuộc tính quan tâm, cho tên và thị trấn. Tôi muốn tìm Richard (London) và Brian (Madrid).Rails/Arel - ưu tiên khi kết hợp các thuộc tính AREL
Trong dài tay,
p=Person.scoped
pred1=p.table[:forename].eq('Richard').and(p.table[:town].eq('London'))
pred2=p.table[:forename].eq('Brian').and(p.table[:town].eq('Madrid'))
pred3=pred1.or(pred2)
tôi sẽ mong đợi điều này để bọc các vị từ trong ngoặc để duy trì tính toàn vẹn của truy vấn. Nhưng nhìn vào pred3.to_sql cho một phản ứng bất ngờ:
"(`person`.`forename` = 'Richard' AND `person`.`town` = 'London' OR `person`.`forename` = 'Brian' AND `person`.`town` = 'Madrid')"
Làm cách nào để Arel có thể tạo truy vấn đúng?
Bạn đã bao giờ tìm được giải pháp cho điều này chưa? Tôi gặp vấn đề tương tự và câu trả lời được đề xuất không hoạt động. – CrashRoX
@CrashRoX, tôi đã đăng câu trả lời bên dưới. – John