Ошибка синтаксиса именованной области SQL - PullRequest
0 голосов
/ 23 апреля 2011

Похоже, у меня есть некоторые проблемы с кавычками?

Моя названная область:

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'%')):

1 Ответ

2 голосов
/ 23 апреля 2011

Вы можете попытаться избавиться от "%?%" В синтаксисе 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_ что-то scope, Rails уже сделал это за вас, ActiveRecord динамически определяет такие методы.

...