tl;博士
如何将以下 SQL 转换为 Arel(或 Rails 中被视为标准的任何内容)
@toplist = ActiveRecord::Base.connection.execute(
'select ci.crash_info_id,
count(distinct(user_guid))[Occurences],
c.md5
from crashes ci
join crash_infos c on c.id=crash_info_id
group by ci.crash_info_id
order by [Occurences] desc')
--- tl 结束;博士 ----
我正在开发一个小型 Web 项目,其目标是获取我们的客户崩溃报告(当我们的桌面应用程序崩溃时,我们将诊断信息发送到我们的服务器),分析它们,然后显示导致我们的应用程序崩溃的最常见错误是什么崩溃..这样我们就专注于修复影响我们大部分用户的错误..
我有 2 张桌子:
crash_infos - id, md5(堆栈跟踪的 md5。在 .net 堆栈跟踪中,异常消息有时由 .net 翻译成用户的母语!所以我基本上通过删除语言特定部分并从中生成 md5 来清理异常)
崩溃 - id、user_guid(用户 id)、crash_info_id(id 到 crash_infos 表)
现在的问题是,我想做一个查询,显示唯一用户最常见的崩溃(避免为同一用户计算多次相同的崩溃)并按崩溃次数对其进行排序。不幸的是,我对 Arel 了解的不够多(或者任何关于 Rails 的 ruby 方法),所以我最终得到了原始 SQL :(
@toplist = ActiveRecord::Base.connection.execute(
'select ci.crash_info_id,
count(distinct(user_guid))[Occurences],
c.md5
from crashes ci
join crash_infos c on c.id=crash_info_id
group by ci.crash_info_id
order by [Occurences] desc')
我怎样才能将它转换为更“railsy”的东西?
先感谢您