首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails .简化计算模型和对象

Rails .简化计算模型和对象
EN

Stack Overflow用户
提问于 2012-07-03 12:11:31
回答 1查看 261关注 0票数 2

我最近就这个问题问了几个问题,我现在要走到哪里去,但在我最后的问题中,也许还不够具体,无法做到这一点。因此,我试图构建一种基于应用程序数据计算某些度量的结构,这种结构应该是灵活的,以便更容易地(并且安全地)添加额外的度量,并且在我的视图中使用也相对简单。

总体目标是,我将能够拥有一个自定义助手,它允许在我看来类似于以下内容:

代码语言:javascript
复制
calculate_metric(@metrics.where(:name => 'profit'),@customer,@start_date,@end_date)

这应该是相当不言自明的--名称可以被替换为任何可用的度量名称,并且可以在任何给定的时间段内为任何客户或客户组执行计算。

产生复杂性的地方在于如何存储计算度量的公式--我已经在当前的结构中展示了我为这样做而建立起来的结构:

您将注意到,关键模型是度量、操作、operation_type和操作数。当公式非常简单时,这种结构可以工作,比如利润--一个只有两个操作数,@customer.sales.selling_price.sum@customer.sales.cost_price.sum,只有一个类型的减法运算。因为我们不需要存储任何中间值,所以register_target将是1return_register也是。

我不认为我需要写出一个完整的示例来说明它在哪里变得更加复杂,但如果我想要计算在两个日期之间开设帐户(但不一定购买)的客户的电子邮件地址的百分比,这将变得更加复杂,因为助手函数将需要知道如何处理日期变化。

因此,这种结构似乎过于复杂,除了一个简单的公式之外,其他任何东西都很难使用--有人能提出更好的解决这个问题的方法吗?

编辑:根据来自铁路狗的答案,我对我的模型做了一些轻微的修改,并重新上传了图表以保持清晰。从本质上说,我已经确保了reporting_category模型可以用于向用户隐藏中间操作数,并且可以以分类格式表示用户计算中可能使用的操作数。现在,我所需要的就是有人帮助我修改我的结构,允许一个操作以rails-esqe的方式使用实际操作数或以前操作的结果。

到目前为止,感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-03 12:55:28

奥维。自从我做了一些与你所尝试的类似的事情以来,我已经有很多年了(比如15年)。我的应用程序被用来模拟工业焚烧炉的微粒沉积速率。

最后,所有的计算都归结为两个操作数和一个运算符(操作顺序、括号等)。操作数要么是常量、db值,要么是另一个计算的结果(指向另一个计算的指针)。任何操作数(通过模型方法)都可以评估自身,无论该值是内在的,还是需要一个子计算才能首先评估自己。

界面并不特别优雅(我认为这才是真正的挑战),但用户是科学家,他们理解计算分解。

考虑到你的问题,我会让任何一个度量能够返回它的价值,并创造出必要的方法来得出这个答案。毕竟,一个度量只需要知道如何使用指定的运算符组合它的两个操作数。如果一个操作数本身就是一个度量,您只需问它它的值是什么。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11310639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档