Rails

2012-03-27 14 views
5

içinde birden çok koşulla sayım Bitirilen 2 tarih arasındaki tüm kayıtları saymaya çalışıyorum. Bu, create_at alanının start_date ve end_date arasında olduğu ve bitmiş_alan alanının boş olmadığı anlamına gelir.Rails

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

nil değil de bitmiş kayıtları saymak için benzer bir yolu var mı:

ben bitiremedi kayıtları almak için aşağıdaki ifadeyi kullanabiliriz?

+0

Squeel, meta-where gibi bazı taşları kullanabilirsiniz. Bkz. Http://stackoverflow.com/questions/4252349/rail-3-where-condition-using-not-null – gayavat

+0

@gayavat Squeel'in bir fonksiyonellik arasında destek sağladığını düşünmüyorum. Bu yüzden Record.count {yapmak zorundayım. > start_date) & (created_at dcarneiro

cevap

7

Bu, bir şeyleri kaçırmadığım sürece iyi çalışır.

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

Her iki koşulu bir arada tutmak için Record.where ("created_at BETWEEN? AND? AND finished_at IS NOT NULL", start_date, end_date) .count ile devam ettim. – dcarneiro