Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 活动记录-包含的未知列_Ruby On Rails_Activerecord - Fatal编程技术网

Ruby on rails 活动记录-包含的未知列

Ruby on rails 活动记录-包含的未知列,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我正在执行如下活动记录查询: esco = EscoContrato.left_joins( cliente: {unidade_consumidoras: :usina}, arrendamento_contratos: { arrendamento_contrato_unidades: { unidade_consumidora: { contas: :fatura_discriminacoes }}} ).where("unidade_consumidoras.distribuid

我正在执行如下活动记录查询:

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

这很好,但我想使用includes,因为我要使用这些嵌套表,所以不会使用n+1查询。但是,同样的查询,如果我更改
包含的
左连接
,它会给出错误“未知列unidade\u consumidoras.distribidora\u id”。我做错了什么?感谢

这是因为当使用条件显式引用它们时,
包括
需要
引用

如果您想为包含的模型添加条件,您必须 明确引用它们

所以,这应该行得通

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)
或者,您可以像下面这样重新编写查询,而不需要
引用

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