2015-03-10 14 views
31

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?

+0

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) –

Trả lời

73

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]) 
+3

Điều này có thể được đơn giản hóa thành 'Model.where (id: [mảng giá trị])' – kddeisz

+0

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

+0

Bạn không cần dấu ngoặc vuông, '1..8' đã có dạng mảng. – javanut13

3

Đố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]) 
Các vấn đề liên quan