Рассчитать общее количество рельсов 3 - PullRequest
1 голос
/ 25 мая 2011

Каков наилучший способ - или, действительно, любой способ - для вычисления промежуточного итога в Rails?

У меня есть модель, продажа.Он имеет столбец количества и столбец sales_value.Мне нужно заполнить третий столбец total_quantity суммой значений количества предыдущих записей, когда таблица отсортирована по isbn_id, затем channel_id, затем invoice_date.Это устанавливает все виды разумных сигналов тревоги управления базой данных, поэтому я задаюсь вопросом, возможно ли это вообще.

Причиной необходимости этой накопленной суммы является применение процента к продажам, когда накопленное количество находится в определенном диапазоне.Я не могу использовать среднюю стоимость продаж во всех записях, потому что маржа от продаж может значительно меняться со временем - поэтому я бы применил среднее значение к группе продаж, которая может превышать или недоплачивать получателю роялти.

Итак.Должен ли я сделать обратный вызов before_save для модели Sale и update_attribute, как-нибудь?Есть ли способ вернуть значение предыдущей записи, когда таблица отсортирована определенным образом?Или я должен сбросить все записи Sale в массив и, возможно, использовать команду inject для накопления промежуточного итога?

Любые идеи приветствуются, заранее спасибо.

Обновление: следующий заданный вопрос здесь .

1 Ответ

1 голос
/ 25 мая 2011

Не используйте инъекцию (srsly).Лучший способ сделать это - использовать групповые команды SQL и / или методы вычисления в activerecord (например, sum)

http://ar.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMethods.html

...