【发布时间】:2017-05-21 10:00:38
【问题描述】:
在 Rails 中,我有一些看起来像这样的模型:
class Product
has_many :listings
end
class Listing
belongs_to :product
# quantity_in_kg
# total_price
# price_per_kg = total_price / quantity_in_kg
end
我希望能够根据每公斤的价格与产品的每公斤价格来比较产品的列表。例如,此商品的价格仅为每公斤 2 美元,而产品的平均价格为 3 美元。
最终,我希望能够运行一个查询“给我所有低于其产品平均价格的列表”。
这样做的有效方法是什么?我正在考虑使用 ActiveRecord 回调自定义一些东西,并在products 表中缓存每公斤的平均值,并在listings 表中缓存每个列表的每公斤价格。出错的可能性很大,所以我想知道是否还有其他方法。
我正在使用 Postgres 9.6 和 Rails 5.1.0。
(奖励积分:列表也可以是活动/非活动的,我只想比较所有活动列表的平均值)。
【问题讨论】:
标签: ruby-on-rails postgresql activerecord