Usar Arel in Rails - Estoy buscando una forma de crear un ActiveRecord::Relation
que efectivamente resulte en SELECT * FROM table
, que aún puedo manipular más.Rieles/Arel: Seleccionar todos los registros como ActiveRecord :: Relación
Por ejemplo, tengo un modelo que se divide en varias categorías, y regreso el recuento de éstas de la siguiente manera:
relation = Model.where(:archived => false) # all non-archived records
record_counts = {
:total => relation.count,
:for_sale => relation.where(:for_sale => true).count
:on_auction => relation.where(:on_auction => true).count
}
Esto funciona bien, y tiene la ventaja de disparar COUNT
consultas a MySQL, en lugar de seleccionar realmente los registros.
Sin embargo, ahora necesito incluir registros archivados en los conteos, pero relation = Model.all
da como resultado un Array
, y estoy buscando un ActiveRecord::Relation
.
La única forma en que puedo pensar en hacer esto es model.where(model.arel_table[:id].not_eq(nil))
, que funciona, pero parece un poco absurdo.
¿Alguien puede arrojar algo de luz sobre esto?
En Rails 4.0.13, 'Model.all' devuelve una relación y' Model.scoped' está en desuso. – Tsutomu