2009-12-11 3 views
0

Я создаю приложение финансовой отчетности с Ruby on Rails. В приложении у меня есть ежемесячные объекты финансовой отчетности (с атрибутом «доход»). Для любого отдельного финансового отчета я хочу показать (1) годовой доход и (2) доход за последний год (календарные годы в порядке). У каждого объекта также есть атрибут Date (not Datetime), называемый «месяц» (обратите внимание на недопустимое имя метода «month» и «month»), возможно, я должен изменить это имя переменной).Сложная дата найти и ввести

Итак ...

Я думаю, что нужно (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», который не может быть правильным.

Любые идеи или помощь будут оценены!

ответ

0

Какое имя этого поля находится в объекте financial_statement, который содержит нужное значение? Предположив, что имя поля ammount затем просто изменить inject заявление быть:

financial_statements_ytd.inject {|sum, revenue| sum + revenue.ammount } 
2

Это утверждение может делать то, что вы хотите:

financial_statements_ytd.inject(0) {|sum, statement| sum + statement.revenue } 

 Смежные вопросы

  • Нет связанных вопросов^_^