Searchlogic: странное поведение при объединении осциллографов с оператором ИЛИ

В настоящее время я внедряю форму поиска в нашу базу данных пользователей. Я хочу искать по идентификатору, логину или электронной почте.

Естественно, я считаю, что лучший подход - объединить объемы и упростить форму. Итак, я добавил текстовое поле для :id_or_login_or_email_like.

Когда я набираю число в текстовом поле, все работает нормально.

Однако, когда я набираю слово и нажимаю поиск, введенное мной значение теряется и заменяется на 0 (ноль), а результат поиска возвращает всех пользователей, у которых 0 в идентификаторе, имени или логине.

Есть какие нибудь идеи как это починить? Я использую Rails 2.3.2 и SearchLogic 2.4.27. Спасибо!


person Dorian    schedule 01.02.2011    source источник


Ответы (2)


Я думаю, это связано с тем, что ваша область действия сравнивает целое число при сравнении с id, что приводит к преобразованию вашей строки в 0. Попробуйте использовать .dup, чтобы гарантировать, что переданный атрибут области не изменился.

person Pan Thomakos    schedule 01.02.2011
comment
Если это так, это больше похоже на проблему с драгоценным камнем. Я действительно не хочу двигаться в этом направлении. Я отправлю ваше предложение автору гема :) - person Dorian; 01.02.2011

Неважно, я нашел обходной путь: при объединении областей действия с оператором ИЛИ в конце поместите область действия, связанную с целыми значениями.

Поэтому вместо :id_or_login_or_email_like используйте login_or_email_or_id_like. Я отправил эту проблему через github.

person Dorian    schedule 01.02.2011