在尝试将纯SQL查询转换为Activerecord查询时,寻找包含计数的正确方法。我对Activerecord并不熟悉,所以也许我错过了一些明显的东西。
问题是如何在不使用sql查询的情况下在最终结果中包含计数。
这是我到目前为止所做的,效果很好。我只是想摆脱剩下的SQL部分。
abc has_many :pqr
pqr has_many :xyz
ids = [n]
abc
.select(
:identifier,
:name,
"count(DISTINCT pqr.key) as pqr_count",
"count(xyz.id) as xyz_count",
)
.joins(pqr: [:xyz])
.where(
active: true,
id: ids,
xyz: {
status: 'open',
}
)
.where.not(identifier: 'sandbox')
.group(:identifier)
简而言之,用更好的东西替换"count(DISTINCT pqr.key) as pqr_count" and "count(xyz.id) as xyz_count"
正确方向的任何一点都会非常棒。