gpt4 book ai didi

sql - ActiveRecord:find_by_sql 并包括

转载 作者:行者123 更新时间:2023-12-04 17:47:56 27 4
gpt4 key购买 nike

我想同时使用 find_by_sql 和包含。

我使用 find_by_sql 是因为我在 from 内部编写 select 以利用索引。
某种方式,如果我使用左连接,索引将被忽略。

但是, find_by_sql 不返回 ActiveRecord_Relation 而是返回 Array 对象,所以我不能写

like Model.find_by_sql("select * from (select * from table limit 10)table left join rel_table on ...").includes(:rel_table,...) .

之后我可以运行两个查询和手动包含。
有没有办法将它作为一个 SQL 来解决?

最佳答案

您不能调用includes在结果数组上,但您可以手动调用 Rails 预加载器来做同样的事情。

preload associations with find_by_sqlARel mimic includes with find_by_sql .

array = Model.find_by_sql("select * from ...")

# Rails 3 and 4.0.x
ActiveRecord::Associations::Preloader.new(array, [:rel_table]).run

# Rails 4.1+
ActiveRecord::Associations::Preloader.new.preload(array, [:rel_table])

关于sql - ActiveRecord:find_by_sql 并包括,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27009705/

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