Reputation: 2055
class Hospital
has_many: invoice_transaction, through: :invoices
has_many: invoices
end
class invoice
belongs_to :hospital
end
class InvoiceTransaction
belongs_to: invoice
has_one :hospital, through: :invoice
end
hospital.invoice_transactions works well
Now I want to query InvoiceTransaction
based on multiple hospital id
something like this
InvoiceTransaction.joins(:hospital).find([.array of hospital ids..])
but this returns empty records
Upvotes: 0
Views: 514
Reputation: 1371
Slightly cleaner syntax,
InvoiceTransaction.joins(:hospital).where(hospitals: { id: [array of hospital ids] })
Upvotes: 1
Reputation: 408
Use where
instead of find
when you work with joins
where('name_of_the_table.id in (?)', [array of hospital ids])
InvoiceTransaction.joins(:hospital).where('hospitals.id in (?)', [array of hospital ids])
Upvotes: 2