Rails 查询 .order 麻烦



查询从来都不是我的强项。我正在尝试修改当前查询以允许按 ASC/DESC 排序。

为此,我有一个模型活动,它扩展到共享,扫描,查看,兑换(可通过Activity.type访问)。

我当前的查询是

results=Activity.select("*, count(*) as count").where(created_at: date_from..date_to).group(:user_id).having("count > 0").count("type='#{val}', count(*) #{desc/asc}")

这给了我这样的东西:

{2=>1, 3=>1, 1=>305, 111=>99, 110=>98, 109=>97, 108=>96, 107=>95, 106=>94, 105=>93,...

这里的问题是,前 2 个有 (type=#{val}).count = 0。这意味着它们下面有活动记录,但它们的类型不同。是否有任何方法可以修改查询以使这些 .count=0 实际上尊重排序?

否则,作为解决方法,我可以手动将所有这些添加到数组中,然后最后评估它们。

已编辑:已更新到我当前的问题

你试过这个吗:

results=Activity.select("*, count(*) as count")
.where(created_at: date_from..date_to).group(:user_id, :type)
.having("count > 0").order("type ASC, count(*) DESC")

最新更新