我想構建一個強制索引,同時也使用包括一個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