Использование Arel в Rails - я ищу способ создания ActiveRecord::Relation
, который эффективно приводит к SELECT * FROM table
, которым я все еще могу манипулировать.
Например, у меня есть модель, котораяразделить на несколько категорий, и я возвращаю счетчики для них следующим образом:
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
}
Это прекрасно работает и имеет преимущество в том, что запускает COUNT
запросов к MySQL, а не фактически выбирает записисами по себе.
Однако теперь мне нужно включить в счет архивные записи, но relation = Model.all
приводит к Array
, и я ищу ActiveRecord::Relation
.
.Единственный способ, которым я могу думать об этом, это model.where(model.arel_table[:id].not_eq(nil))
, который работает, но кажется немного абсурдным.
Может ли кто-нибудь пролить свет на это?