0

我正在使用 Ruby on Rails 构建财务报告应用程序。在应用程序中,我有每月财务报表对象(以“收入”作为属性)。对于任何单一的财务报表,我想显示 (1) 年初至今的收入,和 (2) 去年年初至今的收入(日历年很好)。每个对象还有一个名为“月”的日期(不是日期时间)属性(注意“月”变量名称与“月”方法名称混淆......也许我应该更改该变量名称)。

所以...

我认为我需要(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 回答
0

financial_statement对象中包含您想要的值的字段的名称是什么?假设字段名称是ammount然后只需将inject语句修改为:

financial_statements_ytd.inject {|sum, revenue| sum + revenue.ammount }
于 2009-12-11T23:31:52.123 回答