gpt4 book ai didi

ruby-on-rails - Rails/Arel:将所有记录选择为ActiveRecord::Relation

转载 作者:行者123 更新时间:2023-12-03 08:54:08 25 4
gpt4 key购买 nike

在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)),它可以工作,但似乎有点荒谬。

谁能对此有所启示?

最佳答案

对于Rails 4.1及更高版本:Model.all返回一个关系(以前没有)

对于Rails 4.0:Model.where(nil)
对于Rails 3.x:Model.scoped

关于ruby-on-rails - Rails/Arel:将所有记录选择为ActiveRecord::Relation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5595901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com