0

我是 RoR 的新手,正在开发现有的 Rails 2 应用程序。该应用程序报告了许多指标,我需要添加一个新指标,它是其他两个指标的比率。我想了解做这种事情的“正确”Rails 方式。但我也想快速完成它,并且对其余代码的风险最小。我想将现有指标的报告、汇总、绘图和聚合逻辑扩展到新的计算字段,而不必以稍微不同的方式重新实现所有内容。

  1. 我可以向数据库添加一个字段并安装一个触发程序来维护它。这具有将工作推入数据库的优点,并允许我在必要时对该字段进行索引,但它会消耗数据库中的另一个字段,我认为我目前并不需要该字段的索引。AR 迁移会是什么样子?

  2. 我可以创建一个计算字段的视图。如何在不中断其余代码的情况下切换模型以使用具有新字段的新视图?AR 迁移是什么样的?

  3. 我可以将新字段添加到查询中... SELECT my_table.*, a/b AS ab_ratio FROM my_table ... 这是否意味着我需要检查该特定模型上的所有 .find 调用并更改它们?有更好的方法吗?

有一些代码示例来说明这种事情在哪里以及如何实现和/或记录是非常有帮助的。

4

1 回答 1

2

我建议使用模型上的事件来计算合成值并将任何业务逻辑/触发器保留在数据库之外:

class MyRecord < ActiveRecord::Base
  before_save :update_ratio

private
  def update_ratio
    self.ratio = self.a / self.b
  end
end
于 2013-02-02T20:12:43.293 回答