gpt4 book ai didi

ruby-on-rails - 避免加载关联关系对象

转载 作者:数据小太阳 更新时间:2023-10-29 07:50:59 26 4
gpt4 key购买 nike

我正在使用 Ruby on Rails 3.0.7,出于性能原因,我想避免在检索类对象时加载关联对象。也就是说,如果我有一个带有 has_many :users 语句的 Article class\model 我不想在检索时加载关联的 User 对象Article 对象(我认为这种行为取决于 Ruby on Rails 的“约定优于配置”原则)。

我该怎么做?

最佳答案

正如 Yet Another Geek 所指出的,Rails (ActiveRecord) 默认不加载关系对象。相反,它会在您要求时去获取它们。如果你不需要那个关系的对象,它永远不会费心加载它们,从而节省了数据库时间。

如果您确实需要,它会延迟检索它们(默认情况下)。如果您知道您将需要关系中的所有(或许多)对象(假设 x 对多),那么您可以使用 :include 修饰符到您的 find 来预先获取它们(这会快很多,因为它可以通过单个数据库调用来完成)。了解并利用预先加载关系对象的能力是一件很重要的事情。

@person = Person.find(params[:id], :include => :friends)

综上所述,您想要的行为(如果不需要则不加载对象)是默认行为,您应该已准备就绪。剩下的答案只是一些可能对您以后有用的上下文。

关于ruby-on-rails - 避免加载关联关系对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6403082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com