Мне нужно вычислить некоторые агрегированные значения в таблице sql в моем проекте rails.Я видел различные методы, доступные в ActiveRecord::Calculations
, но я не могу использовать ничего, кроме встроенных методов.
MyModel.calculate(:stdev, 'value')
выдает исключение Undefined method 'stdev' for #<Arel::Attributes::Attribute
.
Из кода в calculations.rb
я понимаю, что он вызывает в какой-то момент column.send(operation)
, что вызывает ошибку, и в Arel::Expressions
я обнаруживаю, что он не может обрабатывать ничего, кроме min, max, sum, среднего и count... Итак, похоже, что я не смогу это использовать.
Итак, мой вопрос становится следующим: могу ли я использовать стандартный метод select
, чтобы получить то, что я хочу, и получить несколько агрегатовв то же время ?Как я могу получить результаты или установить псевдонимы для полученных столбцов?Я думал об использовании чего-то подобного:
MyModel.select("stdev(value)","average(value)")
В любом случае, совет?Или какой-нибудь приятный трюк для Арела в моих расчетах?
Большое спасибо.