2017-08-08 89 views
0

我做這樣的活動記錄查詢:活動記錄 - 未知列包括

esco = EscoContrato.left_joins(
    cliente: {unidade_consumidoras: :usina}, 
    arrendamento_contratos: { arrendamento_contrato_unidades: { unidade_consumidora: { contas: :fatura_discriminacoes }}} 
).where("unidade_consumidoras.distribuidora_id = 4") 

這工作得很好,但我想用包括,因爲我要利用這些嵌套的表格,所以不會做n + 1個查詢。但是,同樣的查詢,如果我更改left_joinsincludes,它會給我錯誤「unknown column unidade_consumidoras.distribuidora_id」。我究竟做錯了什麼?謝謝

回答

1

那是因爲includes需要references時使用條件明確引用它們。

API

如果要條件添加到您的包含的模型,你就必須 明確引用它們。

所以,這應該工作

EscoContrato.includes(
    cliente: {unidade_consumidoras: :usina}, 
    arrendamento_contratos: { arrendamento_contrato_unidades: { unidade_consumidora: { contas: :fatura_discriminacoes }}} 
).where("unidade_consumidoras.distribuidora_id = 4").references(:unidade_consumidoras) 

或者,您可以重新編寫查詢象下面這樣無需references

EscoContrato.includes(
    cliente: {unidade_consumidoras: :usina}, 
    arrendamento_contratos: { arrendamento_contrato_unidades: { unidade_consumidora: { contas: :fatura_discriminacoes }}} 
).where(unidade_consumidoras: {distribuidora_id: 4}) 
+1

的作品就像一個魅力!非常感謝 –