ramamoorthy_villi
ramamoorthy_villi

Reputation: 2055

rails Query based on has_one relation

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

Answers (2)

Sujan Adiga
Sujan Adiga

Reputation: 1371

Slightly cleaner syntax,

InvoiceTransaction.joins(:hospital).where(hospitals: { id: [array of hospital ids] })

Upvotes: 1

Danilo Cândido
Danilo Cândido

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

Related Questions