這就是情況。有一張名爲「課程」的表格。一個課程可以有許多GA(研究生助理)。找到記錄後得到未定義的方法錯誤?
我找到一個特定的路線是這樣的:
this_course = Course.where("name = 'COMP1900'")
然後我嘗試測試,如果他們有任何GA的當前分配給他們(這個作品在其他地方的代碼):
if this_course.gas.empty?
所以這拋出一個未定義的方法錯誤。怎麼來的?使用.gas.empty?其他地方似乎工作。
這就是情況。有一張名爲「課程」的表格。一個課程可以有許多GA(研究生助理)。找到記錄後得到未定義的方法錯誤?
我找到一個特定的路線是這樣的:
this_course = Course.where("name = 'COMP1900'")
然後我嘗試測試,如果他們有任何GA的當前分配給他們(這個作品在其他地方的代碼):
if this_course.gas.empty?
所以這拋出一個未定義的方法錯誤。怎麼來的?使用.gas.empty?其他地方似乎工作。
它應該是這樣的:this_course = Course.where("name = 'COMP1900'").first
由於where
子句返回一個數組對象。
where
給你一個數組滿足你作爲參數傳入的條件的對象。
就你而言,假設有項目滿足您的條件Course.where("name = 'COMP1900'")
。
然後,this_course
將看起來像這樣:
this_course = [Object_1, Object_2, Object_3]
由於this_course
是一個數組,即使gas
是Course
一個屬性,它不是一個屬性或陣列的方法,所以它會給你一個錯誤。
您可以通過抓取符合此條件的第一個元素解決這個問題:
this_course = Course.where("name = 'COMP1900'").first
或者你可以這樣做: this_course = Course.find_by(name: 'COMP1900')
這也將返回第一個元素。