2013-07-30 23 views
5

Im пытается вытащить все записи из модели Project, которая включает в project_name слово «Fox». Я могу сделать активный поиск записи и возврата определенных project_names, как «Brown Fox»:Rails Active Record Search - Name включает слово

@projects = Project.where("project_name like ?", "Brown Fox") 

Но если я хочу, чтобы вернуть все имена, которые включают «Фокс», это не работает, если полное название проекта не является «Fox»:

@projects = Project.where("project_name like ?", "Fox") 

Как сделать поиск, который возвращает все объекты со словом «Fox» в названии?

ответ

8

Попробуйте использовать:

variable = "Fox" 
Project.where("project_name like ?", "%#{variable}%") 
+0

спасибо. это сделало это. – JakeTy

0

Вы можете использовать SQL % оператора:

@projects = Project.where("project_name like ?", "%Fox%") 

Обратите внимание, что если вы хотите, чтобы ваш запрос, чтобы вернуть результаты, игнорируя регистр слов, вы можете использовать PostgreSQL ilike вместо like.

+0

Это тоже сработало! – JakeTy

0

Пробовали ли вы ransack?

С Ransack вы можете сделать что-то вроде

@projects = Project.search(:project_name_cont => "Fox") 

Если вы считаете, что это слишком много для того, что вам нужно. вы можете использовать оператора %, поскольку MurifoX сказал

+0

Спасибо. Я сейчас смотрю в Рансака. – JakeTy

Смежные вопросы