我想构建一个强制索引,同时也使用包括一个ActiveRecord语句。Activerecord强制索引与包括
声明看起来是这样的:
Job.from("jobs FORCE INDEX(index1,index2)").includes(:workflow)
但它似乎AR不喜欢这一点,并抛出:
NoMethodError (undefined method `map' for "jobs FORCE INDEX(index1,index2)":Arel::Nodes::SqlLiteral):
有没有人有任何想法?所有的工作好,如果包含语句被取下,所以我认为这是试图建立LEFT OUTER JOIN
和表别名查询...
感谢 中号
似乎可以在rails 4中正常工作。值得探索从rails 3和rails 4之间的区别(http://api.rubyonrails.org/v3.2.11/classes/ActiveRecord/QueryMethods.html#method- i-from和http://api.rubyonrails.org/classes/ActiveRecord/QueryMethods.html#method-i-from) – Shadwell
Hi Shadwell。它工作正常,除非activerecord必须执行基于其中一个包含的查询。所以一个更完整的例子是Job.from(“jobs FORCE INDEX(index1,index2)”)。includes(:workflow).where(“workflows.name ='Bob'”)... – user3707
您需要添加一个'references'调用:'where(“workflows.name ='Bob'”)。references('workflows')' – Shadwell