2010-02-06 16 views

回答

0

根據你需要這個如何動態是,你總是可以做一個字符串,像這樣:

Widget.all(:conditions => ["(a,b) in ((1,2), (3,4))"]) 

這至少可以節省你做的find_by_sql電話。你也可以使用OR運算符來分割兩個數組嗎?但如果你有一個變量值的數量,這不是理想的

Widget.all(:conditions => ["(a,b) in ((?),(?))", [1,2], [3,4]]) 

2

你可以做到這一點。聽起來這是一個補丁到ActiveRecord的好機會!

更新:一個可變數量值的kludge。仍然比find_by_sql更好......但你說得對,它本來應該由AR支持。

values = [[1,2],[3,4]] 
Widget.all(:conditions => ["(a,b) in (#{Array.new(values.length,'(?)').join(',')})", *values]) 
+0

是。我有一個可變數量的參數,所以我有一個map/sanitize/join sql writer。它的工作原理,但我同意這是框架應該做的事情。 – 2010-02-06 19:29:12

相關問題