给定的
class Parent < ActiveRecord::Base
has_many :children
end
class Child < ActiveRecord::Base
end
p = Parent.first
c = p.children.build()
如何在不触发加载关联的情况下测试p.children是否有任何挂起的插入?如果我检查p.children.present?它将加载关联。
Rails 3.2
有助于澄清的说明: “挂起”是指内存中尚未持久化的对象。我想知道(并迭代)任何这些尚未持久化的对象而不加载关联。基本上,如果我调用find_or_initialize_by ......它只会查看数据库。我正在尝试检查是否有任何尚未保存的记录,我可以更新而不是另一个插入。
答案 0 :(得分:0)
你误解了构建。它只是新的别名,没什么特别的。 https://github.com/rails/rails/blob/959fb8ea651fa6638aaa7caced20d921ca2ea5c1/activerecord/lib/active_record/relation.rb#L84
Build不会在数据库中“创建”或进行挂起插入,只需在内存中创建一个新对象,以便视图可以获取此对象并显示某些内容,尤其是对于表单。
以后可以保存这些类型的对象,但没有必要这样做。