在Rails中存储旧的前一年数据?

时间:2010-04-18 07:34:34

标签: ruby-on-rails activerecord

我正在开发一个包含大量数据条目的应用。 它像Campaign一样有像rate_per_sq_feet,start_date,end_date这样的游戏。即它的最长日期约为30天。

广告系列一旦完成,就完成了另一个广告系列。 现在我很困惑如何将这些广告系列存储为报告,以便不会重新访问它。我的意思是以这样的方式存储它将在未来几年的行为中起作用?

类似于上一年度报告存储的帐户的会计年度,所有计算都已完成,以便在以后检索时,不应执行所有算法和计算。像冻结数据的东西?

1 个答案:

答案 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