Rails de Requête avec ILIKE

J'ai écrit un finder comme suit:

@cars = @cars.joins(:manufacturers).where("manufacturers.name ILIKE ?", params[:manufacturer].gsub!(/-/, ' '))

params[:manufacturer] est dans une mise en forme d'une chaîne qui a été .parameterized par les Rails.

Le problème, c'est qu'une chaîne de caractères avec un "'" ou un "&" elle n'est pas compensée par ILIKE correctement.

Ainsi, à titre d'exemple, certaines chaînes qui sont stockés dans ma DB et leur paramétrée versions:

  1. "Ceci est un test" paramétrée: "ceci-est-un-test" gsubbed: "ceci est un test"
  2. "Il ne l'a pas" paramétrée: "il ne s'est-t-il" gsubbed: "il n'a t do it"
  3. "Ce & Que" paramétrée: "-que" gsubbed: "ce que"

Donc quand je fais des ILIKE entre la première partie de la 2 et la troisième partie de 2, il ne crée pas un match. Même avec de 3. 1 évidemment, fonctionne très bien.

Toutes les idées comment obtenir un match correct même avec les caractères spéciaux dans les chaînes?

ce db que vous utilisez ?
Curieux, est-il nécessaire d'accepter la recherche de paramètres à partir de l'url? J'ai eu un problème similaire, je l'ai résolu en acceptant la recherche params via une requête post. Ensuite le terme de recherche et de son url correspondante seraient stockées dans une table de recherche, que ces urls sont nécessaires pour le RÉFÉRENCEMENT. Donc plus tard, quand quelqu'un visite de cette url, il charge le terme de la db et de la recherche.
Est-ce comme une limace ou quelque chose ?
Bon point. Qu'il sera super facile. Je dois ajouter une limace à ma table, et puis peut-requête sur cette base. Merci!
La page entière est construite à l'aide de filtres et de tris basé sur les paramètres de chaîne de requête. J'ai pu le modifier afin qu'il fonctionne comme ça, mais actuellement les chaînes de requête sont comment ça fonctionne.

OriginalL'auteur rctneil | 2015-02-21