我有一个应用程序,我可以在其中接收和提取来自多个来源的每日销售报告。所有的结构都不同,所以我在单独的表中存储到我的 Postgres 数据库中。
我目前正在做这样的事情来迭代一个报告源的过去 30 天的销售情况,它似乎工作得很好。我担心的是,当我添加其他报告源时,这将是多么高效和可扩展,因为我目前的结构化方式意味着我必须为每个新源添加和重复大量代码。
<% from = Date.today - 30 %> #30 days ago
<% to = Date.today %> #Today
<% step_date = from %>
<% source_one_chart_data = [] %> #Initialise empty array to later pass to JS Chart library
<% begin %>
<% count = @product.sales_source_one.total.where(:report_date => step_date).count %> #check if there are any sales for this product on the current step date
<% if count != 0 %>
<% sale = @product.sum_total_net_by_day(step_date) %>
<% source_one_chart_data.push(sale.to_s) %> #Push sales total to array if sales exist on that date
<% else %>
<% source_one_chart_data.push("0") %> #Otherwise push a zero into array so all 30 days map to a value
<% end %>
<% step_date += 1.day %> #Increase step_date by 1 on each iteration of the loop
<% end while step_date <= to %> #Stop loop when we reach to date
任何人都可以就如何有效地引入额外的销售来源而无需重复代码提供任何指导吗?此外,如果我可以将步骤从日更改为周/月/年并让它相应地计算销售额,那就太好了;因此,如果每天报告销售来源并且步骤是周,它将汇总步骤周中出现的所有值。