所以情况就是这样。那里有一个名为Course的表。课程可以有很多GA(研究生助理)。
我找到了这样一个特定的课程:
this_course = Course.where("name = 'COMP1900'")
然后我尝试测试他们当前是否分配了任何GA(这在代码的其他地方有用):
if this_course.gas.empty?
所以这会引发一个未定义的方法错误。怎么会?使用.gas.empty?其他地方似乎也有效。
答案 0 :(得分:3)
应该是这样的:this_course = Course.where("name = 'COMP1900'").first
由于where
子句返回一个数组对象。
答案 1 :(得分:1)
where
为您提供数组对象,这些对象符合您作为参数传递的条件。
在您的情况下,假设 3 项目符合您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')
也将返回第一个元素。