在RoR 2中将计算字段添加到AR模型

时间:2013-01-31 13:44:40

标签: ruby-on-rails view triggers rails-activerecord calculated-columns

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

  1. 我可以在数据库中添加一个字段并安装一个触发程序来维护它。这样做的好处是可以将工作推送到数据库中,并允许我在必要时索引字段,但它会消耗数据库中的另一个字段,我认为此刻我真的不需要该字段的索引。 AR迁移会是什么样的?

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

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

  4. 有一些代码示例,说明在何处以及如何实现和/或记录此类事物将非常有帮助。

1 个答案:

答案 0 :(得分:2)

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

class MyRecord < ActiveRecord::Base
  before_save :update_ratio

private
  def update_ratio
    self.ratio = self.a / self.b
  end
end