2016-04-29 85 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')这也将返回第一个元素。

相关问题