0

Ruby on Rails で財務報告アプリを構築しています。アプリには、毎月の財務諸表オブジェクトがあります (属性として「収益」を使用)。任意の 1 つの財務諸表について、(1) 年初から現在までの収益と (2) 昨年から現在までの収益 (暦年は問題ありません) を表示したいと考えています。各オブジェクトには、「月」と呼ばれる日付 (Datetime ではない) 属性もあります (「月」変数名と「月」メソッド名の混乱に注意してください...その変数名を変更する必要があるかもしれません)。

そう...

(1) 適切な日付範囲で財務諸表 (つまり、オブジェクト) の配列を「検索」し、(2) 「収益」フィールドを合計する必要があると思います。これまでの私のコードは...

def ytd_revenue
  # Get all financial_statements for year-to-date.
      financial_statements_ytd = self.company.financial_statements.find(:all, 
      :conditions => ["month BETWEEN ? and ?", "self.month.year AND month.month = 1",
      "self.month.year AND self.month.month" ])
  # Sum the 'revenue' attribute
      financial_statements_ytd.inject(0) {|sum, revenue| sum + revenue }

終わり

これによりアプリが壊れることはありませんが、正しくない「0」が返されます。

アイデアや助けをいただければ幸いです。

4

3 に答える 3

2

このステートメントはあなたが望むことをするかもしれません:

financial_statements_ytd.inject(0) {|sum, statement| sum + statement.revenue }
于 2009-12-12T00:16:06.060 に答える
1

ActiveRecordのsumクラスメソッドを調べることもできます。フィールド名と条件を渡して合計を取得できます。

于 2009-12-12T00:20:26.757 に答える