Rails / Arel: selección de todos los registros como ActiveRecord :: Relation
Usando Arel en Rails - Estoy buscando una manera de crear unActiveRecord::Relation
que efectivamente resulta enSELECT * FROM table
, que aún puedo manipular más.
Por ejemplo, tengo un modelo que se divide en varias categorías, y devuelvo los recuentos de estos 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 dispararCOUNT
consulta a MySQL, en lugar de seleccionar los registros ellos mismos.
Sin embargo, ahora necesito incluir registros archivados en los recuentos, perorelation = Model.all
resulta en unArray
, y estoy buscando unaActiveRecord::Relation
.
La única forma en que puedo pensar en hacer esto esmodel.where(model.arel_table[:id].not_eq(nil))
, que funciona, pero parece un poco absurdo.
¿Alguien puede aclarar esto