我是RoR的新手,正在研究现有的Rails 2应用程序。该应用报告了许多指标,我需要添加一个新指标,该指标是其他两个指标的比率。我想了解“正确”的Rails方式来做这种事情。但我也想快速完成它,并且对其余代码的风险最小。我想将现有指标的报告,摘要,图表和聚合逻辑扩展到新的计算字段,而不必以稍微不同的方式重新实现所有内容。
我可以在数据库中添加一个字段并安装一个触发程序来维护它。这样做的好处是可以将工作推送到数据库中,并允许我在必要时索引字段,但它会消耗数据库中的另一个字段,我认为此刻我真的不需要该字段的索引。 AR迁移会是什么样的?
我可以创建一个计算字段的视图。如何切换模型以使用具有新字段的新视图而不破坏其余代码? AR迁移是什么样的?
我可以在查询中添加新字段... SELECT my_table。*,a / b AS ab_ratio FROM my_table ...这是否意味着我需要检查该特定模型上的所有.find调用并改变那些?有没有更好的方法呢?
有一些代码示例,说明在何处以及如何实现和/或记录此类事物将非常有帮助。
答案 0 :(得分:2)
我建议在模型上使用事件来计算合成值并将任何业务逻辑/触发器保留在数据库之外:
class MyRecord < ActiveRecord::Base
before_save :update_ratio
private
def update_ratio
self.ratio = self.a / self.b
end
end