簡體   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