Railsのバインド変数

ActiveRecord でバインド変数を使う場合は「?」を使う。

 i = Item.find :all, :conditions => [ "section_code = ? and price > ?", "A001", 2000 ]

この場合、セットする値を順番にArrayに格納して渡してやらないといけない。
でも、このバインド変数にキーワードが使え、セットする値を Hash で渡す事が出来る。上の場合だと以下のように出来る。

 i = Item.find :all, :conditions => [ "section_code = :code and price > :price", { :price => 2000, :code => "A001" }]

これだと、セットする値の順番は気にしなくていいし、SQL もちょっと見やすくなる。