2017-08-08 13 views
0

が含まれて私はこのようなアクティブレコードクエリをやってる:Active Recordは - のため不明列が

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回のクエリは実行されません。しかし、同じクエリで、includesleft_joinsを変更すると、「unknown column unidade_consumidoras.distribuidora_id」というエラーが表示されます。私は間違って何をしていますか?ありがとう

答えて

1

これは、の条件を明示的に使用するとにはreferencesが必要なためです。 API

から

あなたが含まモデルに条件を追加したい場合は、明示的にそれらを参照 する必要があります。

だから、これは魔法のようにreferences

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

作品を必要とすることなく、あなたは以下のようなクエリを再作成することができ、また

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) 

動作するはずです!どうもありがとうございます –

関連する問題