У меня есть модель ItemsSold, которая имеет общее количество журналов, книг, видеороликов, greeting_cards, ручек, проданных за один день. Как я могу изящно возвращать массив с недельными проданными итогами для каждого элемента за последнее произвольное количество недель?Как суммировать записи в Rails 3?
У меня есть файл модели:
#items_sold.rb
class ItemsSold < ActiveRecord::Base
attr_accessible :magazines, :books, :videos, :greeting_cards, :pens, :sold_date
end
Моя таблица определяется следующим образом:
t.integer :magazines
t.integer :books
t.integer :videos
t.integer :greeting_cards
t.integer :pens
t.datetime :sold_date
Кроме того, можно ли вернуть месячные суммы за последний год, тоже?
Огромное спасибо, можно ли получить итоговые значения за каждую неделю, а затем помещать каждую неделю как хэш с массивом? Я думаю, что ваш пример дает итоговые данные за последние 5 недель, а не разбивает их на неделю. – Chanpory
@GeekActive, конечно, вы можете. Просто настройте условия на сумму ItemSold. Я обновил приведенный выше пример, чтобы показать вам, как он может работать. Я точно не знаю структуру данных, которую вы ищете, но вы правильно поняли идею? Просто используйте циклы, чтобы определить, как вы хотите сегментировать данные на основе дат, а затем используйте 'ItemsSold.sum (attr, date_conditions)' для получения сумм. –
@GeekActive, альтернативно, в меньшем количестве запросов вы можете получить номер недели для даты с помощью функции mysql и сгруппировать по ней. Но это намного сложнее, чем использование ruby для выполнения вашей работы, и не должно быть необходимым, если вы не обнаружите, что рубин медленный, потому что массивные массивы данных должны оптимизироваться по запросам. –