tl;dr
Как преобразовать ниже 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;dr ----
Я работаю над небольшим веб-проектом, его цель — получить отчеты о сбоях наших клиентов (когда наше настольное приложение дает сбой, мы отправляем диагностику на наши серверы), анализировать их, а затем отображать наиболее распространенную ошибку, из-за которой наше приложение сбой.. Так что мы сосредоточимся на исправлении ошибок, которые затрагивают большую часть наших пользователей..
У меня есть 2 таблицы:
crash_infos - id, md5 (md5 трассировки стека. В .net трассировка стека и сообщения об исключениях иногда переводятся .net на родной язык пользователя! Поэтому я в основном очищаю исключение, удаляя специфичные для языка части и создавая из него md5)
сбои - id, user_guid (идентификатор пользователя), crash_info_id (идентификатор для таблицы crash_infos)
Теперь вопрос: я хотел сделать запрос, который показывает наиболее распространенные сбои для уникального пользователя (избегайте многократного подсчета одного и того же сбоя для одного и того же пользователя) и отсортировать его по количеству сбоев. К сожалению, я недостаточно знал Arel (или что-то еще, что такое ruby on rails), поэтому в итоге я получил необработанный 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')
Как я могу преобразовать это во что-то более «железное»?
заранее спасибо