[英]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.