2009-06-04 7 views

答えて

8

この構文は次のとおりです。

+0

ありがとうございます、それは完全に機能します。 – kdt

+0

Railsは、条件(つまりパーセント記号)のSQLを解析しません。条件にパラメータを渡す必要があります。 –

+0

上記の構文を使用すると、Johnが示唆したとおりですRailsは、ユーザーがSQLインジェクション攻撃を行えないように、エスケープ文字で入力をサニタイズすることができます。このプロセスでは、入力を引用符で囲みます。これは潜在的な問題を避けるために使用するメソッドです。 –

0

文字列%awesome%

編集周り

Widget.find(:all, :conditions => ["name like '%awesome%'"]) 

ただ、追加の単一引用符を試してみてください: [OK]を、それはdoesnの; tは、実際に働いています。 sqlのサニタイザは、%sで何かをしています。

これは動作します。

Widget.find(:all, :conditions => ["name like ?","%awesome%"]) 

John Topleyの回答ごとに、実際に必要な場合は文字列を可変にすることができます。

SQLエラーが発生したときに役立つヒントはdevelopment.logです。実際にデータベースに対して実行されているすべてのクエリがリストされます。 SQLの基本知識があれば、ActiveRecordレベルでスタブを作成するのではなく、コンソールで直接デバッグすると便利なことがよくあります(私の場合は、その段階に入る前にコードがバーフィングしていたと思いますが)。

+0

一重引用符を追加しても役立たないようです:-( – kdt

+0

@jcs - ログのSQL文として報告されるもの – DanSingerman

0

%awesome%の引用符がないため、ソリューションが動作しません。

関連する問題