2012-03-27 11 views
5

Estoy tratando de contar todos los registros entre 2 fechas que están terminadas. Esto significa que el campo created_at está entre start_date y end_date y el campo finished_at no es nulo.Cuenta con varias condiciones en Rails

que puede utilizar la siguiente expresión para obtener los registros que no terminó:

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

¿Hay una manera similar a contar los registros en los que terminaron por no es nula?

+0

Puede usar algunas gemas, como Squeel, meta-where. Ver http://stackoverflow.com/questions/4252349/rail-3-where-condition-using-not-null – gayavat

+0

@gayavat No creo que Squeel soporte una funcionalidad, así que tengo que hacer Record.count {(created_at > start_date) & (created_at dcarneiro

Respuesta

7

Esto debería funcionar bien a menos que me falta algo.

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

Terminé de usar Record.where ("created_at BETWEEN? AND? AND finished_at IS NOT NULL", start_date, end_date) .count para mantener juntas ambas condiciones – dcarneiro

Cuestiones relacionadas