我正在开发一个包含大量数据条目的应用。 它像Campaign一样有像rate_per_sq_feet,start_date,end_date这样的游戏。即它的最长日期约为30天。
广告系列一旦完成,就完成了另一个广告系列。 现在我很困惑如何将这些广告系列存储为报告,以便不会重新访问它。我的意思是以这样的方式存储它将在未来几年的行为中起作用?
类似于上一年度报告存储的帐户的会计年度,所有计算都已完成,以便在以后检索时,不应执行所有算法和计算。像冻结数据的东西?
答案 0 :(得分:0)
您可以将广告系列报告存储在数据库或文件系统中。报告可以在首次请求归档广告系列时生成。
class Campaign < ActiveRecord::Base
# Campaign model has an attribute called report_file
def report_file
return nil unless expired?
attributes['report_file'] ||= generate_report_file
end
def generate_report_file
return nil if attributes['report_file']
# Generate the report using Prawn PDF OR wickedPDF etc.
# Update report_file attribute with the report file location
# Return the file location
end
end
class CampaignsController < ApplicationController
before_filter :check_expiry, :only => :show
def report
if @campaign.report_file
send_file(@campaign.report_file)
else
# handle error
end
end
def show
end
def check_expiry
@campaign = Campaign.find(params[:id])
if @campaign.expired?
render :report
end
end
end