在Rails中使用Arel - 我正在寻找一种创建ActiveRecord::Relation
的方法,这有效地导致了SELECT * FROM table
,我仍然可以进一步操作。Rails/Arel:选择所有记录作为ActiveRecord ::关系
例如,我的影片分成多个类别的模型,我在下面的方式返回计数这些:
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))
,它的工作原理,但似乎有点荒谬。
任何人都可以对此有所了解吗?
On Rails 4.0.13中,'Model.all'返回一个关系,不推荐使用'Model.scoped'。 – Tsutomu 2015-03-01 16:43:57