La función :count se utiliza de manera diferente que las funciones :conditions, :joins, :limit, :order:, :having, :select. La función count puede tener cero, uno o dos parámetros:
- Sin parámetros, obtiene el número de filas de la tabla
- Con un parámetro. Rails determina si primero si se trata de un hash, sinó trata el primer parámetro como condición para determinar las filas que serán contadas
- Con dos parámetros que no son hash. El segundo parámetro es tratado como una condición :join
- Un hash como parámetro, el hash se interpreta como argumento de la función. Opcionalmente se puede agregar antes del hash el nombre de una columna y se contará solo los valores no nulos de esa columna.
- Finalmente, usando el sql nativo con count_by_sql
order_count = Order.count
result = Order.count "amount > 10"
result1 = Order.count ["amount > ?" , minimum_purchase]
result = Order.count "amount > 10 and line_items.name like 'rails%'" ,
"left join line_items on order_id = orders.id"
Order.count :conditions => "amount > 10" ,
:group => "state"
count = LineItem.count_by_sql("select count(*) " +
" from line_items, orders " +
" where line_items.order_id = orders.id " +
" and orders.name = 'Dave Thomas' ")
Fuentes: Agile Web Development with Rails - 3rd Edtition
Comentarios