2013-07-30 14 views
5

Próbuję pobrać wszystkie rekordy z modelu projektu, który zawiera w nazwie projektu słowo "Fox". Mogę zrobić aktywnego wyszukiwania rekordów i powrócić konkretnych project_names, jak „Brown Fox”:Szyny Aktywne wyszukiwanie rekordów - Nazwa zawiera słowo

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

Ale jeśli chcę zwrócić wszystkie nazwy, które zawierają „Fox”, to nie działa, chyba że pełna nazwa projektu jest „Fox”:

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

Jak zrobić wyszukiwania, które zwraca wszystkie obiekty ze słowem „Fox” w nazwie?

Odpowiedz

8

Spróbuj użyć:

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

dzięki. to zrobiło to. – JakeTy

0

Można użyć operatora SQL %:

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

pamiętać, że jeśli chcesz zapytanie do powrotu Wyniki ignorując sprawę słowo, można użyć PostgreSQL ilike zamiast like.

+0

To też zadziałało! – JakeTy

0

Próbowałaś ransack?

Z plądrować można zrobić coś jak

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

Jeśli uważasz, że to zbyt wiele za to, co trzeba. możesz użyć operatora % jako MurifoX powiedział

+0

Dzięki. Teraz patrzę na Ransacka. – JakeTy