Хранить старые данные за предыдущий год в Rails? - PullRequest
0 голосов
/ 18 апреля 2010

Я разрабатываю приложение, которое имеет массивные записи данных. Это как Campaign, у которой есть атрибуты, такие как rate_per_sq_feet, start_date, end_date. то есть максимальная дата будет около 30 дней.

Как только кампания закончена, она завершена, и начинается другая. Теперь я запутался в том, как хранить эти кампании в виде отчетов, чтобы к ним не обращались регулярно. Что я имею в виду, чтобы хранить таким образом, чтобы он действовал как отчет о будущих годах?

Это что-то вроде финансового года на счетах, где хранятся отчеты за предыдущий год со всеми выполненными вычислениями, поэтому при последующем получении все алгоритмы и вычисления не должны выполняться. Что-то вроде замороженных данных ??

1 Ответ

0 голосов
/ 18 апреля 2010

Вы можете хранить отчеты о кампании в базе данных или файловой системе. Отчет может быть создан по первому запросу на заархивированную кампанию.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...