如何在rails中初始化自己的类?

时间:2009-06-03 11:12:33

标签: ruby-on-rails ruby oop

我想调用InvoicingAndDelivery.report_lines,然后给我一系列结果,但它不起作用。有任何想法吗?

class InvoicingAndDelivery < Report
  include DateExtentions
  attr_accessor :report_lines, :tba_line, :sum_line

  def initialize(part_or_service_ids, start_date, to_date)

    # @report_lines = []

    number_of_months(start_date,to_date).times do |i|
      start_date = start_date + i.months
      l = InvoicingAndDeliveryReport.new
      l.month = start_date.strftime("%m/%Y")
      l.work_profile = WorkProfileLine.delivery_amount_for_serivces_in(part_or_service_ids, start_date)
      l.forecast_delivery = LineItem.forecast_delivery_amount_for_services_in(part_or_service_ids, start_date)
      l.invoicing = InvoiceLine.invoices_total_for_services_in(part_or_service_ids, start_date)
      l.projected_invoices = InvoiceLine.projected_invoice_total_for_services_in(part_or_service_ids, start_date)
      l.costs =  LineItem.costs_total_for_services_in(part_or_service_ids, start_date)
      l.gross_profit = l.invoicing - l.costs
      l.opportunities = LineItem.oportunities_value_for_services_in(part_or_service_ids, start_date)
      #    @report_lines<< l
    end

    @tba_line = InvoiceLine.service_type(@part_or_service).tba_lines.sum("invoice_lines.sell_price * invoice_lines.quantity").to_f
    @sum_line = get_sum_line
  end

2 个答案:

答案 0 :(得分:1)

如果InvoicingAndDelivery来自ActiveRecord::Base,则为shouldn't override initialize。而是将此代码放在after_initialize

答案 1 :(得分:1)

什么是报告?

你有可能覆盖你不应该拥有的东西......需要在初始化时调用super,或者如前所述,将其作为回调。