2010-02-06 165 views
0

我得到一个sitenum未定义的方法错误。问题是我试图以site_id和student_number为目标,然后根据site_id将student_number的值增加1。因此,如果有两个site_id(例如site_id 1,site_id 2),那么至少会有两条记录的student_number值为2001。如果2001年的值存在该网站,那么我想通过1个为该网站等下次student_number递增将是2002年,2003年,等未定义的方法sitenum

学生型号:

:student_number => 
sitenum = self.site_id 
count = Student.count_by_sql("SELECT MAX(student_number) FROM students WHERE site_id = #{sitenum}") 
if count >= 2001 
    Student.sitenum(:order => "student_number DESC").student_number + 1 
    else 
    2001 
    end 

任何反应会不胜感激。

回答

0

我的理解,从一个说明什么,但是假设,你要这样这样:

:student_number => 
    sitenum = self.site_id 
    count = Student.count_by_sql("SELECT MAX(student_number) FROM students WHERE site_id = #{sitenum}") 
    if count >= 2001 
    Student(:condition => { :site_id => sitenum }, 
     :order => "student_number DESC").student_number + 1 
    else 
    2001 
    end 
+0

其实,这个返回每次1的值,如果2001已经存在的网站。我的意图是,如果2001年已经存在,那么每次创建该网站的新记录时(例如2002,2003,2004等)都会增加。现在如果2001年存在,它只是返回1时间。 注意我必须使用Student.first,因为Student(:condition)会返回一个错误,即Student不是一个方法。 – JohnMerlino 2010-02-06 20:30:28