我担心 Rails 是否可以处理金融应用程序所需的复杂聚合类型,尤其是 ORM 是否可以有效地处理这些。在我正在考虑使用它的财务应用程序中,需要对以各种方式汇总的详细财务数据进行大量报告。如果没有 Rails ORM 的支持,我需要直接编写 SQL。但我担心一旦我开始这样做,Rails 的其他部分可能无法正常工作,因此我可能最终主要使用 Rails 作为其路由,而很少使用其他部分。这是一个有效的担忧还是我不必要地担心?
4 回答
这个问题说明了一个被广泛讨论的 RoR 问题 - 它与困难的数据库映射要求相对不适。(这实际上是 ActiveRecord 模式的困难所在。)它喜欢将复杂的查询分解为更适合 AR 模型的更简单的查询,您可能已经知道这是对表的相对较轻的抽象,具有基于例如一个的简单关系对多类型断言。
所以我想说,如果你自己接受 SQL 职责,然后让 RoR 处理非持久性部分,你会更舒服。
这不仅限于 RoR。大多数对象关系建模工具都提出了相同的问题。
(脚注:我几乎使用了 ORM 的缩写,但还有另一个 ORM 恰好很好地专门处理了这些类型的概念数据库设计和抽象问题:对象角色建模。)
Rails 可能不是此应用程序的合适平台。或者您可以考虑对数据库中的视图使用 ActiveRecord。在视图中聚合数据,然后使用“rails_sql_views”gem,您可以将它们视为普通模型。(我从来没有使用过这个,所以我不知道它在实践中的效果如何。)
编辑:在进一步检查中,您甚至可能不需要任何宝石或任何其他特殊设置来简单地查询视图。
我喜欢活动记录的原因是它可以让您深入了解抽象。我还没有遇到过 AR 无法处理的情况。我敢肯定可能会有一些非常深奥的例子,但更好的问题是给出一个你想要做的查询类型的例子,让别人告诉你如何在 AR 中做到这一点。