gpt4 book ai didi

ruby-on-rails - rails 选择并包括

转载 作者:行者123 更新时间:2023-12-03 01:33:38 27 4
gpt4 key购买 nike

谁能解释一下吗?

Project.includes([:user, :company])

这会执行 3 个查询,一个用于获取项目,一个用于获取这些项目的用户,一个用于获取公司。

Project.select("name").includes([:user, :company])

这会执行 3 个查询,并完全忽略选择位。

Project.select("user.name").includes([:user, :company])

这将执行 1 个具有正确左连接的查询。并且仍然完全忽略选择。

在我看来,rails 忽略了包含的选择。好吧,但是为什么当我将相关模型放入 select 时,它会从发出 3 个查询切换到发出 1 个查询?

请注意,第一个查询是我想要的,我只是无法想象这是获取它的正确方法,也无法想象它为什么有效,但我不确定如何在一个查询中获取结果(.joins似乎只使用我实际上并不想要的 INNER JOIN,当我手动指定 .joins 搜索 gem 的连接条件时,我们使用的搜索 gem 会很奇怪,因为它试图重新添加具有相同名称的连接)。 p>

最佳答案

我在选择和包含时遇到了同样的问题。为了急切地加载关联模型,我使用了 native Rails 范围“预加载”http://apidock.com/rails/ActiveRecord/QueryMethods/preload它提供急切加载,而无需在作用域链中跳过“选择”。

我在这里找到了它https://github.com/rails/rails/pull/2303#issuecomment-3889821

希望这个技巧对某人有帮助,就像对我有帮助一样。

关于ruby-on-rails - rails 选择并包括,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4169726/

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