如果我有两个具有给定关系的A和B类:
class A < AR::Base; has_many :bs; end
class B < AR::Base; belongs_to :a; end
执行时:
a=A.new
a.bs << B.new
a和插入Bs列表中的元素都不会保留。 但是,如果我们在调用new之后调用a.save:
a=A.new
a.save!
a.bs << B.new
新创建的B会立即保留。
如何避免这种隐含的保存行为?
答案 0 :(得分:1)
简短的回答,你不能不幸。来自rails docs:
集合&lt;&lt;(object,...)
通过将其外键设置为集合的主键,将一个或多个对象添加到集合中。 请注意,此操作会立即触发update sql而不等待父对象上的保存或更新调用。
斜体是我的重点。