0

引用符に問題があるように見えますか?

私の名前付きスコープ:

named_scope :find_by_name, lambda {|name| {:conditions => ["first_name LIKE '%?%' or last_name LIKE '%?%'",  name.split(' ').first, name.split(' ').last]}}

そして、これが私が検索を行う方法です:

find_by_name("#{search}")

生成された SQL とエラーは次のとおりです。

ActionView::Template::Error (Mysql::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'foo'%' or last_name LIKE '%'foo'%')' at line 1: SELECT COUNT(*) FROM `users` WHERE (first_name LIKE '%'foo'%' or last_name LIKE '%'foo'%')):
4

1 に答える 1

2

SQL 構文で '%?%' を削除して、代わりにこれを使用できます。

named_scope :find_by_name, lambda {|name| {:conditions => ["first_name LIKE ? or last_name LIKE ?",  '%' + name.split(' ').first + '%', '%' + name.split(' ').last + '%']}}

うまくいくかどうか教えてください。PSまた、find_by_ something
スコープ を定義するのは良い考えではありません.Railsはすでにそれを行っています.ActiveRecordはそのようなメソッドを動的に定義します.

于 2011-04-23T06:01:43.433 に答える