2

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

例如,佣金模型可能是将以下几行加在一起

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

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

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

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

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

TIA

4

1 回答 1

0

回复:使用 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 输出中访问它们。

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

于 2012-05-08T22:20:34.347 回答