2016-04-29 87 views
0

這就是情況。有一張名爲「課程」的表格。一個課程可以有許多GA(研究生助理)。找到記錄後得到未定義的方法錯誤?

我找到一個特定的路線是這樣的:

this_course = Course.where("name = 'COMP1900'") 

然後我嘗試測試,如果他們有任何GA的當前分配給他們(這個作品在其他地方的代碼):

if this_course.gas.empty? 

所以這拋出一個未定義的方法錯誤。怎麼來的?使用.gas.empty?其他地方似乎工作。

回答

3

它應該是這樣的:this_course = Course.where("name = 'COMP1900'").first 由於where子句返回一個數組對象。

1

where給你一個數組滿足你作爲參數傳入的條件的對象。

就你而言,假設有項目滿足您的條件Course.where("name = 'COMP1900'")

然後,this_course將看起來像這樣:

this_course = [Object_1, Object_2, Object_3]

由於this_course是一個數組即使gasCourse一個屬性,它不是一個屬性或陣列的方法,所以它會給你一個錯誤。

您可以通過抓取符合此條件的第一個元素解決這個問題:

this_course = Course.where("name = 'COMP1900'").first

或者你可以這樣做: this_course = Course.find_by(name: 'COMP1900')這也將返回第一個元素。

相關問題