2012-07-25 2 views
0

salesMy 기본 설정 :
나는 Workday 모델과 has_many/belongs_to 관계가있는 사용자 모델이 있습니다.
평일 모델에는 '판매'및 '날짜'라는 속성이 있습니다.모델의 여러 인스턴스 속성의 추가 출력

내가 원하는 것은 주어진 기간 동안 다른 근무일 인스턴스의 판매 속성을 더하는 것입니다.

def all_sales 
    s = 0.to_f 
    c = @user.workdays.count 
    for i in (0..c) 
    s += @user.workdays[i].sales 
    end 
end 

이 가장 우아한 방법은 이것에 대해 갈 뭐죠 : 나는이 같은

NoMethodError: undefined method `sales' for nil:NilClass 

코드의 결과 해당 사용자의 모든 판매를 보인다까지 추가보다도 먼저하려고 시작?

편집 1 오타 그것은 user.workdays [I] 가정하고 .SALES하지 .count이었다. 미안합니다.

+0

을 특정 시간 간격을 조회 할 수 있습니다 또한

@user.workdays.sum(:sales) 

Arel

를 통해 수행 할 수 있을까? '무 (無)'근무가 있습니다. 또한,'s = @ user.workdays.inject {| acc, w | acc + w.count}'''s = 0.to_f''를 얻지는 않습니다. 단지's = 0.0'만이 아니겠습니까? 돈과 관련된 의미있는 계산을 수행하는 경우 수레를 사용하는 것에주의하십시오. –

+0

또는'def all_sales; @ user.workdays.sum (& : count); end' (테스트 안 함, 닫기). –

+0

0.0과 0.to_f가 같지 않습니까? 그리고 0.0은 다소간 짧은 표기법입니까? 어쨌든, 계산은 정말로 중요하지 않습니다. 이익에 대한 아주 기본적인 개요입니다. –

답변

1

는 당신이 어떻게 당신이 그것을 요구하고있다

@user.workdays.where("date BETWEEN ? AND ?",start_date, end_date).sum(:sales) 
+0

고마워, 그게 정확히 내가 뭘 찾고 있었는지. 고맙습니다! –

관련 문제