2012-03-27 15 views
5

Próbuję policzyć wszystkie rekordy między 2 datami, które zostały zakończone. Oznacza to, że pole created_at znajduje się między datą_początkową a datą_końcową, a pole finished_at nie ma wartości null.Liczba z wieloma warunkami w Railsach

mogę użyć następującego wyrażenia, aby uzyskać rekordy, które nie ukończył:

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

Czy istnieje podobny sposób zliczyć rekordy gdzie kończył się nie jest zerowa?

+0

można korzystać z niektórych perełki, takie jak Squeel, meta-gdzie. Zobacz http://stackoverflow.com/questions/4252349/rail-3-where-condition-using-not-null – gayavat

+0

@gayavat Nie sądzę, że Squeel obsługuje między funkcjami, więc muszę zrobić Record.count {(created_at > start_date) & (created_at dcarneiro

Odpowiedz

7

To powinno działać dobrze, chyba że czegoś brakuje.

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

Skończyłem z Record.where ("created_at BETWEEN? AND? AND finished_at IS NOT NULL", data_początkowa, data_końcowa) .count, aby zachować oba warunki razem – dcarneiro

Powiązane problemy