活动记录 - 包含的未知列

时间:2017-08-08 15:25:29

标签: ruby-on-rails activerecord

我正在执行这样的Active Record查询:

npm install unirest --save

这很好用,但我想使用includes,因为我会使用这些嵌套表,所以不会进行n + 1次查询。但是,相同的查询,如果我更改const unirest = require('unirest'); const fs = require('fs'); var Request = unirest.get('https://www.csfd.cz/tvurce/65871') .end(function(res) { console.log(res.body); fs.writeFileSync('output.html', res.body) }); 的{​​{1}},则会向我显示错误"未知列unidade_consumidoras.distribuidora_id"。我究竟做错了什么?感谢

1 个答案:

答案 0 :(得分: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})