在 Rails 中使用 Arel - 我正在寻找一种创建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))
,它有效,但似乎有点荒谬。
任何人都可以对此有所了解吗?