我想知道实现我想要的最佳方式是什么:p
我有一个模型'ModelA',它有很多'ModelARate'。 ModelARate包含注释或速率(或两者)。
每次展示ModelA时,我都不想计算平均费率。因为它对数据库来说并不酷(访问所有ModelARate并获得率......) 我还需要知道最低和最高的费率。
如何在rails中实现这一目标的最佳方式? (不使用宝石,我需要了解它是如何工作的)
我想在ModelA中添加属性rate_score,它在创建ModelARate时增加,并且返回rate_score / modelarates.size的方法 对于最低和最高费率,属性也是?在rails中没有可以为我做这个的机制吗?
感谢您的帮助
答案 0 :(得分: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上完成的,所以它们非常快,所以你不必担心速度。