2013-02-21 49 views
0

我想要计算一个特定学生在一个特定的月份中离开MySQL数据库中的离开表离开的离开。我使用的代码 -Rails:在一个循环中调用一个函数为每次迭代返回相同的值

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 

----------更新的以下摘录----------

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 

上述方法计算在2013年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控制台上完美运行,没有任何语法错误,但存在一些我无法弄清楚的错误。

+0

正确的方法是计算(操作,列名,选项= {})。你的方法就像计算(总和,student_id) – 2013-02-21 06:56:13

+0

更好的选择将使用find选项而不是find_by_sql! – 2013-02-21 06:58:49

+0

@SachinR你会详细说明一下吗?我只是不明白..! – 2013-02-21 07:04:47

回答

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

,或者您可以参阅link

相关问题