2009年06月02日

Ruby on Railsで前方一致検索をする際に

Ruby on Railsで前方一致検索をしようと思う。LIKE用のメソッドは用意されていないように見えたので(プラグインがあるという記述を見かけたので、きっとないのだろうという判断)、conditionsをベタっぽく書くことにする。

が、普通にlike 'hoge%'と書くと、こんなエラーが出る。

malformed format string - %

どうやら%は置換用の文字になっているので使ってはいけないらしい。サニタイズのこととかもあるので、「?」使うのがとりあえず正解のように見えた。

Hoge.find(:all, :conditions => ["fuga like ?", "moge%"]

Railsのことはまだまだよく分からない。何度も「もうfind_by_sqlでいいか」と思いつつ、それでは学習しないのでやり方を調べる日々。