[Ruby on Rails] Counting records


-
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:

  1. Sin parámetros, obtiene el número de filas de la tabla



  2. order_count = Order.count



  3. 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



  4. result = Order.count "amount > 10"
    result1 = Order.count ["amount > ?" , minimum_purchase]


  5. Con dos parámetros que no son hash. El segundo parámetro es tratado como una condición :join



  6. result = Order.count "amount > 10 and line_items.name like 'rails%'" ,
    "left join line_items on order_id = orders.id"


  7. 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.



  8. Order.count :conditions => "amount > 10" ,
    :group => "state"



  9. Finalmente, usando el sql nativo con count_by_sql



  10. 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