gpt4 book ai didi

ruby-on-rails - Activerecord Force Index 包括

转载 作者:行者123 更新时间:2023-12-04 05:46:34 28 4
gpt4 key购买 nike

我正在尝试构建一个强制索引的 ActiveRecord 语句,同时还使用包含。

该声明类似于:

Job.from("jobs FORCE INDEX(index1,index2)").includes(:workflow)

但是似乎 AR 不喜欢这样并抛出:
NoMethodError (undefined method `map' for "jobs FORCE INDEX(index1,index2)":Arel::Nodes::SqlLiteral):

有没有人有任何想法?如果去掉 include 语句,一切正常,所以我认为它正在尝试构建 LEFT OUTER JOIN和表别名查询...

谢谢

最佳答案

根据对该问题的评论,结果是 count调用具有 from 的链和 includes (包含关联的条件)是问题所在。

事实上似乎只是使用了 from即使只是 from("jobs") 也可以打电话会导致问题,所以力指数有点牵强附会。

我找不到使用 includes 的解决方案在这种情况下(需要计数)。但是,如果您要包含关联并为其添加条件,则 joins应该等同于 includes无论如何(我认为!)。在这种情况下,以下应该有效(我已将其分解为步骤以使其更明显):

 q = Job.from("jobs FORCE INDEX(index1,index2)")
q = q.joins(:workflow)
q = q.where("workflows.name = 'Bob'")
q.count

如果你真的需要左边的那个 includes提供然后您可以手动指定:
 q = Job.from("jobs FORCE INDEX(index1,index2)")
q = q.joins("left outer join workflows on workflows.job_id = jobs.id")
q = q.where("workflows.name = 'Bob'")
q.count

关于ruby-on-rails - Activerecord Force Index 包括,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29824621/

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