1

将实体推送到其父集合是否会导致加载集合?

例如:

Parent.childs << a_child

parent.childs “数组” 现在加载了所有孩子还是只加载了“a_child”?即将一个SQL“选择* from childs where parent_id = ?” 语句会在添加到集合之前执行吗?

编辑:

http://apidock.com/rails/v3.2.3/ActiveRecord/Associations/CollectionAssociation/concat_records似乎在调用“insert_record”之前调用“add_target”,它将实体添加到@target数组......

4

1 回答 1

1

不(感谢上帝)!Parent.childs是一个代理,'<<' 只会触发创建/更新a_child

有关 Rails 关联方法如何工作的更多信息

同样在associations/collection_associations.rb 的rails 评论中

您需要注意有关目标的假设:代理在需要它们之前不会从数据库中获取记录,但是使用 +build+ 创建的新记录会添加到目标中。因此,目标可能是非空的,并且仍然缺少等待从数据库中读取的子对象。如果您直接查看数据库,则不能假设这是整个集合,因为新记录可能已添加到目标等。

在我的控制台上快速检查确认那里没有加载孩子。

parent.children << child; nil

=> 只有加载的父母和孩子....

于 2013-01-16T15:40:43.683 回答