我正在尝试查找属于一组客户的所有付款。付款通过与客户的账单关系有一个has_one。
模型包括:
class Payment < ActiveRecord::Base
belongs_to :bill
has_one :client, through: :bill
class Client < ActiveRecord::Base
has_many :bills
has_many :payments, through: :bills
class Bill < ActiveRecord::Base
belongs_to :client
has_many :payments
我试图通过以下查询找到
@payments = Payment.joins(:bills).where('bill.client_id IN (?)', [1,2,3,4])
但获取PG超时消息
尝试了.includes而不是.joins,并且还收到了PG超时消息
并尝试了
Payment.includes(:bill).where( bills: { 'client_id IN (?)', [1,2,3,4] } )
感谢您的帮助。
答案 0 :(得分:2)
你的bill
单数/复数是错误的。当你创建一个字符串时,它必须是表名,所以它将是复数。当您使用散列格式时,您使用与关联相同的大小写(从Payment
使用时为单数)。所以:
Payment.joins(:bill).where( bills: { client_id: [1,2,3,4] } )