2012-04-16 31 views
49

Tôi đã tự hỏi nếu có ai biết làm thế nào để làm một mệnh đề "IN" trong activerecord. Thật không may, mệnh đề "IN" là khá nhiều un-googleable vì vậy tôi phải đăng ở đây. Về cơ bản tôi muốn trả lời một câu hỏi như thế này "Hãy cho tôi tất cả các sinh viên đại học đang ở trong ký túc xá nơi id ký túc xá nằm trong mảng này [mảng id]". Tôi biết làm thế nào để viết truy vấn cho một id ký túc xá duy nhất, nhưng tôi không biết làm thế nào để làm điều đó cho một mảng các id.Ruby Activerecord IN khoản

Bất kỳ trợ giúp nào được đánh giá cao. Tôi chắc chắn đây là một repost của một câu hỏi một nơi nào đó, vì vậy tôi sẽ xóa này một khi một câu trả lời/tìm kiếm tốt hơn hạn được tìm thấy.

Trả lời

105

Từ §2.3.3 Subset Conditions of the Rails Guides:

Nếu bạn muốn tìm hồ sơ sử dụng biểu thức IN 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]) 

Mã này sẽ tạo ra SQL như thế này:

SELECT * FROM clients WHERE (clients.orders_count IN (1,3,5)) 
+0

nó có thể không đáng ing các vấn đề này có với mảng trống. – tokland

Các vấn đề liên quan