[英]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 預加載器來做同樣的事情。
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.