2013-02-21 2 views
0

mysql 데이터베이스의 특정 테이블에서 특정 달에 특정 학생 "UG10001"이 수행 한 휴가를 계산하려고합니다. 나는 ----------레일 : 루프에서 함수를 호출하면 각 반복마다 동일한 값이 반환됩니다.

def calculate(student_id) 

sum = Leave.find_by_sql("SELECT leave_duration FROM leaves WHERE MONTH(leave_from) = 2 
    AND YEAR(leave_from) = 2013 AND MONTH(leave_to) = 2 AND YEAR(leave_to) = 2013 AND 
    academic_status = 'APPROVED' AND warden_status = 'APPROVED' AND student_id = student_id 
    AND status = 'ACTIVE'").sum(&:leave_duration) 

return sum 
#it did the trick for me. 
end 

위의 방법은 계산합니다 code--

def calculate(student_id) 

leave = Leave.find_by_sql("SELECT leave_duration FROM leaves WHERE MONTH(leave_from) = 2 
    AND YEAR(leave_from) = 2013 AND MONTH(leave_to) = 2 AND YEAR(leave_to) = 2013 AND 
    academic_status = 'APPROVED' AND warden_status = 'APPROVED' AND student_id = student_id 
    AND status = 'ACTIVE'") 

sum = leave.sum(&:leave_duration) 
return sum 

end 

---------- 업데이트의 다음 조각을 사용하고있는 '13 년 2 월 한 달 동안 특정 학생이 떠나고 전화 기능에 잎의 합계를 반환합니다.

def calcuateLeaveForEachStudent 
    array = Leave.find_by_sql("select student_id from students") 
    c = Array.new 
    for i in 0...array.length 
    student_id = array[i].student_id 
    c[i] = calculate(student_id) 
    end 
end 

위의 메서드를 호출하면 'calculate'메서드는 각 반복마다 동일한 값을 반환합니다. 이것에 대한 가능한 해결책은 무엇입니까? 미리 감사드립니다 ..!

PS -
코드는 구문 오류없이 Rails Console에서 완벽하게 실행되지만, 알아낼 수없는 오류가 있습니다.

+0

올바른 방법을 참조 할 수는 계산이다 (작업, COLUMN_NAME, 옵션 = {}). 귀하의 방법은 다음과 같습니다 calculate (sum, student_id) –

+0

더 나은 옵션은 find_by_sql보다는 find 옵션을 사용합니다! –

+0

@SachinR plz ... 자세히 설명해 주시겠습니까? 나는 단지 그것을 얻지 않는다. –

답변

0
calculate(operation, column_name, options = {}). 

하거나 link

관련 문제