将实体推送到它的父集合会导致加载集合吗?
e.g:
Parent.childs << a_child
parent.childs“array”现在是否已加载所有子项或只是“a_child”?即一个SQL“select * from childs where parent_id =?”语句将在添加到集合之前执行吗?
编辑:
http://apidock.com/rails/v3.2.3/ActiveRecord/Associations/CollectionAssociation/concat_records似乎在调用“insert_record”之前调用“add_target”,它将实体添加到@target数组......
答案 0 :(得分:1)
不(感谢上帝)! Parent.childs
是代理和'&lt;&lt;'只会触发a_child
有关How do rails association methods work?
的更多信息还在rails / collection_associations.rb的rails评论中
你需要小心对目标的假设: 代理在需要之前不会从数据库中获取记录, 但是使用+ build +创建的新内容会添加到目标中。所以 目标可能是非空的,仍然缺少等待阅读的孩子 来自数据库。如果直接查看数据库,则不能 假设这是整个集合,因为可能有新的记录 添加到目标等
快速检查我的控制台,确认孩子没有加载。
parent.children << child; nil
=&GT;只有父母和孩子加载....