预加载已加载模型的关联

时间:2014-06-17 07:57:56

标签: ruby-on-rails activerecord

如果我有一个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。

1 个答案:

答案 0 :(得分:1)

使用model_instance.associated_model只会首次加载关联。

如果我们打开rails console并在那里尝试,我们会看到它只是第一次查询数据库,之后对关联模型的所有调用都没有从数据库加载它。