2012-04-17 28 views
7

Tôi muốn tìm các bản ghi dựa trên nhiều thông số. Nhưng những thông số đó là tùy chọn mupltiple.Đường ray Ruby - cách tìm nhiều tùy chọn?

As "SELECT something FROM mytable WHERE user_name="xyz" and status=("Active" OR "Deleted") 

Làm cách nào để dịch thuật ngữ này thành tuyên bố đường ray?

Person.find_by_user_name_and_status(user_name, status) # this doesn't take the OR operator 

Trả lời

9

Tôi không thể kiểm tra ngay bây giờ, nhưng bạn có thử không?

Person.find_all_by_user_name_and_status(user_name, ["active", "deleted"]) 

nếu ở trên không hoạt động, điều này nên ...

Person.where(:user_name => "xyz", :status => ["active", "deleted"]) 
# translates to: 
# "select * from persons where username = 'xyz' and status in ('active', 'deleted')" 

Bạn nên có một cái nhìn vào Hướng dẫn Rails cho Active Record: http://guides.rubyonrails.org/active_record_querying.html

+0

Cảm ơn! mà làm việc, tôi chỉ làm cho nó tìm _all_by thay vì find_all. toán tử OR được diễn đạt. 'Person.find_all_by_user_name_and_status (user_name, [" active "," deleted "])' –

+1

Ví dụ thứ hai không hoạt động: Person.where (: user_name => "xyz"). Where (: status => ["active", "đã xóa"]) –

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