2012-03-27 36 views
5

Tôi đang cố đếm tất cả các bản ghi giữa 2 ngày đã hoàn tất. Điều này có nghĩa là trường created_at nằm giữa start_date và end_date và trường finished_at không phải là null.Đếm với nhiều điều kiện trong Rails

tôi có thể sử dụng các biểu thức sau đây để có được những hồ sơ mà không kết thúc:

Record.count(:all, :conditions => {:created_at => start_date..end_date, :finished_at => nil }) 

Có cách nào tương tự để đếm các hồ sơ ở đâu xong tại không phải là con số không?

+0

Bạn có thể sử dụng một số đá quý, chẳng hạn như Squeel, meta-where. Xem http://stackoverflow.com/questions/4252349/rail-3-where-condition-using-not-null – gayavat

+0

@gayavat Tôi không nghĩ Squeel hỗ trợ một chức năng giữa vì vậy tôi phải làm Record.count {(created_at > start_date) & (created_at dcarneiro

Trả lời

7

Điều này sẽ chỉ hoạt động tốt trừ khi tôi thiếu thứ gì đó.

Record.where(:created_at => start_date..end_date).where('finished_at IS NOT NULL').count 
+0

Tôi đã kết thúc bằng Record.where ("created_at GIỮA? AND? AND finished_at IS NOT NULL", start_date, end_date) .count để giữ cả hai điều kiện cùng nhau – dcarneiro

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