【问题标题】:dynamic attribute for a rails modelRails 模型的动态属性
【发布时间】:2013-02-08 15:11:10
【问题描述】:

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

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

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

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

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

感谢您的帮助

【问题讨论】:

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


    【解决方案1】:

    可以使用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 上完成的,因此它们非常快,因此您无需担心速度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-17
      • 2019-03-04
      • 1970-01-01
      • 2013-08-11
      相关资源
      最近更新 更多