我在ruby项目中使用活动记录。我有一个具有has_many:foos的机器人类。在我的数据库中,我有一个foos表,其中有一个robot_id作为外键
class Robot < ActiveRecord::Base
has_many :foos
end
class Foo < ActiveRecord::Base
belongs_to :robot
end
然后我创建一个机器人并使用此robot_id作为外键创建foos。
然后,我尝试编写@ robot.foos以获得与机器人相关联的foos列表。但是我只得到一个空数组。
但是,当我尝试Foo.where(robot_id: @robot.id)
时,我会得到所需的列表。
我认为has_many方法创建了foos实例方法,并且该实例方法实际上触发了查询,以获取与我的方法关联的所有foos。显然不是。
has_many方法是否仅为foos创建一个attr_accessor
并将其初始化为一个空数组?还是我在这里想念什么?