这就是情况。有一张名为“课程”的表格。一个课程可以有许多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')
这也将返回第一个元素。