2013-07-30 10 views
5

Sto cercando di estrarre tutti i record da un modello di progetto che include nel progetto nome la parola "Fox". Posso fare una ricerca record attivo e tornare project_names specifici, come 'Brown Fox':Rails Ricerca record attiva - Il nome include una parola

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

Ma se voglio restituire tutti i nomi che includono 'Fox', questo non funziona a meno che il nome completo del progetto è 'Fox':

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

Come faccio a fare una ricerca che restituisce tutti gli oggetti con la parola 'Fox' nel nome?

risposta

8

Provare a utilizzare:

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

grazie. questo è stato. – JakeTy

0

È possibile utilizzare l'operatore SQL %:

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

Si noti che se si desidera che la query restituisca risultati ignorando il caso di parola, è possibile utilizzare PostgreSQL ilike invece di like.

+0

Anche questo funzionava! – JakeTy

0

Hai provato ransack?

Con ransack si può fare qualcosa di simile

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

Se si pensa che è troppo per quello che ti serve. puoi usare l'operatore % come diceva MurifoX

+0

Grazie. Sto guardando Ransack ora. – JakeTy