rails模型的动态属性

时间:2013-02-08 15:11:11

标签: ruby-on-rails ruby-on-rails-3 database-design model attributes

我想知道实现我想要的最佳方式是什么:p

我有一个模型'ModelA',它有很多'ModelARate'。 ModelARate包含注释或速率(或两者)。

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

如何在rails中实现这一目标的最佳方式? (不使用宝石,我需要了解它是如何工作的)

我想在ModelA中添加属性rate_score,它在创建ModelARate时增加,并且返回rate_score / modelarates.size的方法 对于最低和最高费率,属性也是?在rails中没有可以为我做这个的机制吗?

感谢您的帮助

1 个答案:

答案 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上完成的,所以它们非常快,所以你不必担心速度。