Jer*_*iko 31 activerecord ruby-on-rails arel active-relation
在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
}
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,并且具有COUNT向MySQL发送查询的优势,而不是实际选择记录本身.
但是,我现在需要在计数中包含存档记录,但relation = Model.all结果是Array,我正在寻找ActiveRecord::Relation.
我能想到这样做的唯一方法是model.where(model.arel_table[:id].not_eq(nil)),这有效,但似乎有些荒谬.
任何人都可以对此有所了解吗?
Kyl*_*mus 11
对于Rails 4.1及更高版本:Model.all返回一个关系(之前没有)
对于Rails 4.0: Model.where(nil)
对于Rails 3.x: Model.scoped
| 归档时间: |
|
| 查看次数: |
6431 次 |
| 最近记录: |