如果我有一个ActiveRecord模型的实例,并且我知道我会使用很多关联,我会在ActiveRecord :: Relation上使用preload或include方法预加载它们:Model.where(...).preload(:associated_model).first
。
但是,当模型已经实例化而没有重新加载时,有没有办法预加载模型的关联?
让我们假设我加载了我的模型:
model_instance = Model.find(x)
然后,我会期待类似的事情:
model_instance.load(:associated_model)
使用load方法执行查询以查找associated_model并预加载它,但不重新加载model_instance。
答案 0 :(得分:1)
使用model_instance.associated_model
只会首次加载关联。
如果我们打开rails console并在那里尝试,我们会看到它只是第一次查询数据库,之后对关联模型的所有调用都没有从数据库加载它。