【问题标题】:Rails 5 query for a condition in a third table using joins?Rails 5 使用连接查询第三个表中的条件?
【发布时间】:2017-12-29 18:03:20
【问题描述】:

这是我的模型 - 首先:

 class Negocio < ApplicationRecord
  has_many :cuenta_clientes
end

class CuentaCliente < ApplicationRecord
  belongs_to :negocio
  has_many :pago_clientes
 end

第三个:

class PagoCliente < ApplicationRecord
  belongs_to :cuenta_cliente
end

我想选择 Negocio 拥有的所有 PagoCliente。但是 Negocio 和 PagoCliente 之间没有引用(我不能修改表和关系)所以这是我的尝试:

 pagos = PagoCliente.joins(cuenta_cliente: :negocio).where(negocio: {id: params[:negocio_id}])

但这是我的错误输出:

ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  missing FROM-clause entry for table "negocio"
LINE 1: ...cios"."id" = "cuenta_clientes"."negocio_id" WHERE "negocio"....

那么,这个查询的正确语法是什么?谢谢。我正在使用 Postgres...

【问题讨论】:

    标签: sql ruby-on-rails ruby activerecord


    【解决方案1】:

    表格是复数,试试:

    pagos = PagoCliente.joins(cuenta_cliente: :negocio).where(negocios: {id: params[:negocio_id}])
    

    【讨论】:

      【解决方案2】:

      如果你收到params[:negocio_id],你可以这样做

      1-

      cuenta_cliente_ids= Negocio.find(params[:negocio_id]).cuenta_clientes.pluck(:id)
      

      2-

      pago_clientes = PagoCliente.where("cuenta_cliente_id IN (?)", cuenta_cliente_ids)
      

      但是对于您的查询,我认为这里有错字,我对其进行了修改

       pagos = PagoCliente.joins(cuenta_cliente: :negocio).where(negocios: {id: params[:negocio_id]})
      

      如果我错了请纠正我

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-06
        • 2012-11-18
        • 2017-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多