Tôi biết có 3 ký hiệu chính để cung cấp đối số cho phương pháp where
ActiveRecord Hash truy vấn:ActiveRecord HOẶC ký hiệu
- tinh khiết Chuỗi
- Mảng
- Hash
Xác định and
cho Phương pháp where
là thẳng về phía trước:
# Pure String notation
Person.where("name = 'Neil' AND age = 27")
# Array notation
Person.where(["name = ? AND age = ?", 'Neil', 27])
# Hash notation
Person.where({name: "Neil", age: 27})
Chỉ định or
cho phương thức này giống như where
đang cho tôi biết cú pháp băm. Có thể không?
# Pure String notation
Person.where("name = 'Neil' OR age = 27")
# Array notation
Person.where(["name = ? OR age = ?", 'Neil', 27])
# Hash notation DOESN'T WORK
Person.where({name: "Neil" OR age: 27})
Đây là một câu trả lời hoàn chỉnh. Câu trả lời 'arel' đặc biệt tốt vì đây là những gì được thêm vào Rails 5, như tôi đã hiểu. –
Nếu bạn không thể đợi Rails 5, bạn có thể sử dụng cổng sau của đối tượng địa lý này để tạo đường ray 4.2. Được đóng gói độc đáo như viên đá quý “hoặc” https://github.com/Eric-Guo/where-or – Rob
Nếu dự án của bạn vẫn còn trong Rails 3+, bạn có thể thử đá quý rails_or: https: // github. com/khiav223577/rails_or –