У меня есть модель покупки, которая относится как к товару, так и к модели. Я пытаюсь сохранить среднюю цену всех покупок, которые делает пользователь, и обновлять это среднее значение при каждом сохранении новой покупки.
Я знаю, что могу просто рассчитать скользящее среднее, но я пытаюсь сделать это, используя метод среднего, предоставленный ActiveRecord. Еще одно предостережение заключается в том, что в этом надуманном примере цена товара равна нулю. Будет ли среднее значение просто игнорировать все экземпляры nil при расчете среднего значения?
Мое основное зависание связано с блоком after_save
в Закупках.
class Product < ActiveRecord::Base
#price :float
has_many :purchases
end
class User < ActiveRecord::Base
#average_purchase_price :float
has_many :purchases
end
class Purchase < ActiveRecord::Base
belongs_to :user
belongs_to :product
after_save do
#Cant quite nail down the syntax here.
user.update_attributes average_purchase_price: user.purchases.average(#todo average purchase prices)
end
end