【发布时间】:2012-07-04 19:53:38
【问题描述】:
我目前在我的 Rails 应用程序中有一个计算结构,其模型为 metric、operand 和 operation_type。
目前metric模型有很多operands,可以根据operation_type进行计算(如求和、乘法等),每个operand定义为右或左(即这样如果运算是除法,就可以识别出分子和分母)。
目前,操作数始终是某个模型的属性,例如@customer.sales.selling_price.sum.
为了使其可扩展,需要允许操作数或者是某种属性,或者是先前操作的结果,即操作数可以是度量。 p>
我已经附上了我的模型当前外观的图表:
谁能帮助我以最优雅的方式让操作数成为实际操作数或其他指标?
谢谢!
编辑:似乎基于迄今为止唯一的答案,也许多态关联是解决这个问题的方法,但答案是如此简短,我不知道如何以这种方式使用它们 - 任何人都可以详细说明吗?
编辑 2:好的,我想我到了某个地方 - 基本上我现在有一个指标,它有一个操作数,一个操作数有一个指标。我需要一个多态自联接,其中一个指标也可以有很多指标——我是否需要将其称为其他东西,也许是计算的_metrics,以便指标模型可以使用自己?这会让我遇到一个指标有很多操作数,而一个指标有很多计算指标的情况。
编辑 3:我已经更新了我的模型,如下所示,如果对这是否是解决问题的好方法提出任何批评,我将不胜感激。您会注意到,我添加了一个名为 calculated_metric 的模型,它本质上是其他指标的持有者 - 即可以使用两个操作数或一个操作数和一个计算指标的组合来计算一个指标。
编辑 4:为任何可以向我展示详细的 rails-y 方法的人添加赏金。
编辑 5:赏金仍在等待中;虽然下面提供的答案很详细,但我正在寻找最好的方法,而不是解决问题的替代方法(即请让我知道解决问题的最佳方法,而不是寻找回避它的方法,因为我需要这个功能)。谢谢!
编辑 6:对此没有引起太多关注 - 增加赏金会有所帮助,还是这个问题不是跑步者?
【问题讨论】:
-
没有想法?如果我试图做的事情是不可能/明智的,我会感激任何 cmets。
-
请参阅问题中的编辑 3 以获取最新更新。
-
我将为任何可以表明此方法是否是最佳选择,或者我是否应该自我引用度量模型或类似方法的答案添加赏金;无论是最“rails-esque”的方式。
-
赏金仍然有效 4 天,但看起来我需要在这一次上放弃它 - 希望有人能在周末提供帮助。谢谢!
标签: ruby-on-rails database ruby-on-rails-3 model-view-controller model