2012-03-27 17 views
5

Ich versuche, alle Datensätze zwischen 2 Daten, die abgeschlossen sind, zu zählen. Dies bedeutet, dass das created_at-Feld zwischen start_date und end_date liegt und das Feld "fined_at" nicht null ist.Zählen mit mehreren Bedingungen in Rails

kann ich den folgenden Ausdruck verwenden, um die Aufzeichnungen zu erhalten, die nicht zu Ende:

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

Gibt es eine ähnliche Art und Weise die Datensätze zu zählen, in denen fertig zu nicht Null ist?

+0

Sie können einige Edelsteine, wie Squeel, Meta-wo. Siehe http://stackoverflow.com/questions/4252349/rail-3-where-condition-using-not-null – gayavat

+0

@gayavat Ich glaube nicht, dass Squeel eine zwischen Funktionalität unterstützt, also muss ich Record.count {(created_at > start_date) & (created_at dcarneiro

Antwort

7

Das sollte gut funktionieren, es sei denn, ich verpasse etwas.

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

Ich beendete das Gehen mit Record.where ("created_at BETWEEN? AND? UND finished_at IST NICHT NULL", start_date, end_date) .count, um beide Bedingungen zusammen zu halten – dcarneiro