gpt4 book ai didi

mysql - 使用 ActiveRecord 急切地从 User 表中加载单个条目以及关联的 own_to 记录

转载 作者:行者123 更新时间:2023-11-29 11:34:18 24 4
gpt4 key购买 nike

是否可以从用户表以及通过 belong_to 附加的所有关联表中预先加载特定条目。

例如,我有 users 表,其中包含 accounts患者 表,它们都属于 :user。如果我想获取特定的用户表条目并 eager_load 关联的表,类似于这样:

user = User.find_by_email("testemail@here.com").eager_load(:accounts, :patients)

我该怎么做?

最佳答案

你很接近。尝试将关联放入 eager_load 调用中的数组中,如下所示:

user = User.includes([:accounts, :patients]).find_by(email: "testemail@here.com")

现在您已经包含了关联的表,然后找到了您的用户,您可以调用该用户的其他表中的任何属性,而无需从数据库中触发另一个查询。例如,一旦运行,您可以执行以下操作:

all_user_accounts = user.accounts

这不会触发数据库中的查询,而是从内存中加载。

如果您使用#eager_load,您将执行一个查询,而includes 将根据它认为必要的内容执行一两个查询。那么#includes 是做什么用的呢?它会为你决定它将走向何方。您让 Rails 处理该决定。

查看本指南以获取有关 Rails 中的 include/eager_load/preload 的重要信息: http://blog.arkency.com/2013/12/rails4-preloading/

关于mysql - 使用 ActiveRecord 急切地从 User 表中加载单个条目以及关联的 own_to 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36876223/

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