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é .parameterize
d 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:
- "Ceci est un test" paramétrée: "ceci-est-un-test" gsubbed: "ceci est un test"
- "Il ne l'a pas" paramétrée: "il ne s'est-t-il" gsubbed: "il n'a t do it"
- "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.
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
Vous devez vous connecter pour publier un commentaire.
Puisque c'est un lot semblable à une limace système, vous devez juste ajouter un nouveau champ, et de l'appeler ce que vous trouverez convenable, il suffit de ne pas oublier d'ajouter un
index
de sorte que vous ne perdez pas de temps à chercher dans les cordes.Vous pouvez également ajouter un
before_create
oubefore_save
de rappel automatique créer lorsque vous enregistrez l'objet, dans le format que vous êtes la planification de la recherche.OriginalL'auteur Mohammad AbuShady
C'est la façon de le faire:
Par le chemin, vous pouvez faire cela, il semble plus propre:
Je pense que la suppression de la bang(!) pour résoudre votre problème 🙂
Désolé, mais toujours rien
BTW, Ce qui ne l'%#?
% ignorent les mots avant et l'après de ce mot et #{} pour le rubis de manipulation de chaîne.
OriginalL'auteur Sharvy Ahmed