tôi muốn làmActiveRecord trong đó field =? mảng các giá trị có thể
Model.where('id = ?', [array of values])
Làm thế nào để thực hiện điều này nhìn lên mà không chaining OR với nhau?
tôi muốn làmActiveRecord trong đó field =? mảng các giá trị có thể
Model.where('id = ?', [array of values])
Làm thế nào để thực hiện điều này nhìn lên mà không chaining OR với nhau?
Từ here nó dường như được thực hiện bằng một SQL in
tuyên bố:
Hoặc đơn giản hơn, như kdeisz chỉ ra (Sử dụng Arel để tạo ra các truy vấn SQL):
Model.where(id: [array of values])
Điều này có thể được đơn giản hóa thành 'Model.where (id: [mảng giá trị])' – kddeisz
Model.where ("id in (?)", [1..8]) dường như không hoạt động đối với tôi. bất kỳ ý tưởng? – BKSpurgeon
Bạn không cần dấu ngoặc vuông, '1..8' đã có dạng mảng. – javanut13
Từ số ActiveRecord Query Interface guide
Nếu bạn muốn tìm bản ghi bằng IN expressio n bạn có thể vượt qua một mảng với điều kiện băm:
Client.where(orders_count: [1,3,5])
Đối với khả năng đọc, điều này có thể được đơn giản hóa hơn nữa, để:
Model.find_by(id: [array of values])
này tương đương với sử dụng where
, nhưng rõ ràng hơn:
Model.where(id: [array of values])
Bản sao có thể có của [Rails 3/Ruby: ActiveRecord Tìm phương pháp IN condition Array to Parameters single quote issue] (http: // stackoverflow. com/questions/6994095/rails-3-ruby-activerecord-find-method-in-condition-array-to-tham số-đơn) –