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