2

J'ai une recherche floue dans app mes rails, qui sql ce que je veux est la suivante:recherche floue avec l'interface de requête d'enregistrement actif

select * from `user` where name like '%abc%' 

J'ai essayé de le faire comme ceci:

name = 'abc' 
User.where("name like '%?%'", name) 

il a échoué, dans la console il connecté:

select * from `user` where name like '%'abc'%' 

Enfin j'ai essayé ce

name = 'abc' 
User.where("name like ?", '%' + name + '%') 

Cela a fonctionné.

Mais je pense qu'il n'aime pas les rails, y at-il une meilleure façon de le faire?

+2

votre dernière tentative normale, mais mieux avec interpolation 'User.where ("nom comme?", « % {Name}% "). (Score de bonne réputation.) –

+0

manquant # dans la réponse ci-dessus, je crois? – jaydel

Répondre

1
User.where("name REGEXP ?", 'regex_str') 

et regex_str devrait être MySQL chaîne regex

Try this ..

+0

donc trouver par regexp dans la base de données est plus préférable? –

+2

Veuillez expliquer comment ce code aide à résoudre le problème d'origine. Veuillez également mettre en forme (indenter) vos blocs de code pour faciliter la lecture. Le but des réponses n'est pas seulement de résoudre le problème original, mais d'aider d'autres lecteurs de ce fil à comprendre à la fois le problème de base et la solution. Les réponses au code uniquement sont considérées comme des publications de qualité médiocre. – Pred

+0

C'est juste une ligne de code, et je l'ai édité. J'ai spécifié le chemin Rally au problème donné. Je ne suis pas sûr que regexp soit meilleur ou pas. – Sontya