簡體   English   中英

ActiveRecord:find_by_sql 並包括

[英]ActiveRecord: find_by_sql and includes

我想同時使用 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 預加載器來做同樣的事情。

請參閱Arel 模仿包含與 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])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM