Jea*_*héo 5 activerecord ruby-on-rails
如果我有一个ActiveRecord模型的实例,并且我知道我将使用很多它的关联,我在ActiveRecord :: Relation上使用preload或include方法预加载它们Model.where(...).preload(:associated_model).first.
但是,当模型已经实例化而没有重新加载时,有没有办法预加载模型的关联?
让我们想象一下我加载我的模型:
model_instance = Model.find(x)
Run Code Online (Sandbox Code Playgroud)
那么,我希望有类似的东西:
model_instance.load(:associated_model)
Run Code Online (Sandbox Code Playgroud)
使用load方法执行查询以查找associated_model并预加载它,但不重新加载model_instance.
usingmodel_instance.associated_model只会在第一次加载关联。
如果我们打开 Rails 控制台并在那里尝试,我们会看到它仅在第一次查询数据库,之后对关联模型的所有调用都没有从数据库加载它。