繁体   English   中英

在 Ruby on Rails 中存储复杂的公式

[英]Storing Complex Formulas in Ruby on Rails

我正在构建一个需要计算各个公司的销售佣金的 RoR 应用程序。 随着新公司开始使用它,应用程序上线后将会有新的佣金模型。 这些佣金通常表示为复杂的 MS Excel 公式,但并非总是如此。 我需要将这些重新实现为 Ruby。

例如,佣金 model 可能是以下行加在一起

column_1 * ( column_2 / column_3)
if ( column_6 > column_1 ) column_5 * column_4
if ( column_2 < column_1 ) column_2

鉴于go直播后会有新的佣金模型,那么将这些模型存储在数据库中的最佳方式是什么? (这部分不需要过于友好,只有开发人员会添加新模型)

显然,这可以使用eval从数据库中读取上述内容来完成。 除了安全问题之外,它感觉不像是一个“干净”的解决方案。

我还能如何解决这个问题?

我一直在研究 DSL,使用 Excel 文件作为黑盒计算器、公式宝石,我正在努力寻找一种好的方法来做到这一点。

TIA

回复:使用 excel 个文件作为黑盒计算器,我使用axlsx在 Ruby 中生成 excel 个文件,我认为这样的东西可能对你有用:

require 'axlsx'
Axlsx::Package.new do |p|
  p.workbook do |wb|  
    wb.add_worksheet do |sheet|
      sheet.add_row [column_1,column_2,column_3]
      sheet.add_row ["=A1*(B1/C1)"]
    end
  end
  p.serialize('results.xlsx')
end

但是,由于公式实际上是由 excel 执行的,因此您无法通过这种方式在代码中访问它们,只能在 Excel output 中访问它们。

我知道这是一个月前的问题了,所以我很好奇你做了什么,如果有的话。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM