Вы можете сделать это:
Widget.all(:conditions => ["(a,b) in ((?),(?))", [1,2], [3,4]])
Хотя это не идеально, если у вас переменное количество значений. Похоже, хорошая возможность для патча ActiveRecord!
Обновление: кладжа для переменного числа значений. Все же лучше, чем делать find_by_sql ... но вы правы, он должен изначально поддерживаться AR.
values = [[1,2],[3,4]]
Widget.all(:conditions => ["(a,b) in (#{Array.new(values.length,'(?)').join(',')})", *values])