Давайте рассмотрим таблицу изображений со столбцами (id, location_id, созданный_кат, счетчик_1, счетчик_2), следующий запрос работает нормально: он дает мне самую последнюю картинку для каждого местоположения:
Image.where(:created_at => Image.maximum(:created_at, :group => :location_id).values)
Но теперь я хотел бы, чтобы для каждого местоположения было изображение, которое имеет максимум (counter_1 + 3 * counter_2) и следующий запрос не работает (и семантически неверен, а просто объясняет, чего я хочу достичь):
Image.where("counter_1 + 3*counter_2" => Image.maximum("counter_1 + 3*counter_2", :group => :location_id).values)
Я понимаю, почему это не работает, но я не знаю, как это изменить и заставить это работать. Есть ли способ, которым я могу определить пользовательскую функцию агрегата? Любая другая идея?