2011-11-30 61 views
0

我已經掌握了嵌套包含 - 它們非常適合性能 - 但我真正喜歡的是嵌套查找。什麼是實現類似的最佳途徑:在Rails中是否存在「嵌套查找」這樣的事情?

@matchingProducts = Batch.find(:all, 
           :conditions => 'product.name LIKE ?', "%#{search}%", 
           :include => :product) 

正如你所看到的,ProductBatch一個嵌套的屬性,但我想找到基於Product.name一批。

回答

2

Rails 3中我會使用AREL語法:

@matches = Batch.where('product.name LIKE ?', "search").includes(:product) 
+0

謝謝,這個回覆讓我感激不盡,非常感謝。 – Snips

0

你的想法是正確的,你可以做matchingProducts = Batch.find(:all, :include => 'products', :conditions => ["products.name LIKE ?", whatever_you_want], :order => order_as_you_want)

+0

感謝您的回覆,我已經根據你的榜樣,但沒有運氣返工我的代碼。請你能澄清一下你的代碼與我的顯着區別是什麼?是使用'產品'而不是:產品或其他東西? – Snips

+0

我用表名'products'代替symbol:product,然後在sql查詢中用它作爲條件。這是不同的。上面的代碼適用於我。執行查找時得到的錯誤是什麼? – Vilelm

+0

感謝您的額外信息,非常感謝。我得到的錯誤是,「沒有找到名爲'products'的關聯;也許你拼錯了它?」,但那是我呈現結果的時候(順便說一句,我也試圖將它與will_paginate結合起來,但想簡化我原來的問題)。 – Snips

相關問題