我正在执行这样的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"。我究竟做错了什么?感谢
答案 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})