0

我想知道实现我想要的最好方法是什么:p

我有一个模型“ModelA”,它有很多“ModelARate”。ModelARate 包含评论或评分(或两者兼有)。

我不想在每次显示 ModelA 时计算平均费率。因为它对数据库来说并不酷(访问所有 ModelARate 并获取速率......)我还需要知道最低和最高速率。

在 rails 中实现这一目标的最佳方法是什么?(不使用 gem,我需要了解它的实际工作原理)

我正在考虑在 ModelA 中添加一个属性 rate_score ,该属性在创建 ModelARate 时会增加,以及一个返回 rate_score / modelaraates.size 的方法对于最低和最高速率,还有一个属性吗?在 rails 中没有可以为我做到这一点的机制吗?

谢谢你的帮助

4

1 回答 1

2

您可以使用 Rails 上的计算方法http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html

对于您的模型,给定 ModelA 记录,您可以

maximum = model_a.model_a_rates.maximum(:rate)
minimum = model_a.model_a_rates.minimum(:rate)
average = model_a.model_a_rates.average(:rate)

所有这些计算都是在 sql server 上完成的,因此它们非常快,因此您无需担心速度。

于 2013-02-08T15:15:34.817 回答