【发布时间】:2009-12-11 23:06:10
【问题描述】:
我正在使用 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”。
任何想法或帮助将不胜感激!
【问题讨论】:
标签: ruby find sum conditional-statements inject