在不使用sql字符串的情况下计算activerecord查询

时间:2017-01-31 14:25:53

标签: ruby-on-rails activerecord

在尝试将纯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"

正确方向的任何一点都会非常棒。

0 个答案:

没有答案