複雑なSQL検索するならrailswhereが便利だよ

内容は古いよな、、、
https://code.google.com/p/railswhere/
 
Rails3でWhereが使えるから不要かもしれないけど、便利なので使っている。
 
複数の条件を組み合わせるところで苦労した

  w = Where.new
  w.and_not { |ww|
    ww.or "x=1"
    ww.or "x=2"
    ww.or "x=3"
  }
  w.to_s
  
  y = Where.new
  y.and("first_name='tim'")

  User.find(:all, :conditions => (w & y).to_s)

入れ子や複数の条件には「to_s」を加えておいて、単体には「なし」、そして合成したら「to_s」を加える。