2017-08-01 78 views

回答

1

這應該做的伎倆:

invoices = some_logic_to_get_invoices 
orders = Order.includes(:invoices).where(invoices: { id: invoices }) 
+0

成功!對於我來說,看起來有點奇怪,在'where'中你可以單獨要求* nested *'id'鍵給它一個集合(複數)作爲一個值。 –

+0

@ Code-MonKy這是因爲'invoices'實際上是一個ActiveRecord :: Relation對象,它是一個範圍,然後Rails的ActiveRecord知道你想將這個範圍嵌套在where子句中。查看'Order.includes(:invoices).where(invoices:{id:invoices})。to_sql'。另外,如果'invoices'是一個數組,則必須'映射(&:id)'來執行顯式版本。 – MrYoshiji

-1

invoices.map(&:orders).uniq

+0

這是最昂貴的(性能明智的)方式來做到這一點。另外,數組的數組應該是「平坦」的。不要讓Rails以一種非常有效的方式去做SQL可以做的事情 – MrYoshiji

相關問題