我正在构建一个需要计算各公司销售佣金的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
答案 0 :(得分:0)
Re:使用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输出中以这种方式访问代码。
我知道这是一个月份的问题,所以我很好奇你的用途,如果有的话。