2014-09-13 14 views

Répondre

1

le faire en utilisant une chaîne dans where puis utilisez un param pour votre regex. Une fois que vous commencez à utiliser une chaîne dans une clause where, vous utilisez un chiffrement pur, donc http://docs.neo4j.org/chunked/milestone/query-where.html serait bon à lire.

Client.as(:c).where('c.name =~ {name}').params(name: '.h?ristopher') 

Si vous voulez une version plus courte, vous pouvez aussi le faire:

Client.where(name: /.h?ristopher/) 

Le match Cypher il génère est presque identique, mais que l'on n'utilisera un param. Il est moins sûr pour votre base de données si vous basez votre requête sur des données de formulaire et que vos performances ne seront pas aussi bonnes en raison de la manière dont Neo4j met en cache les chemins de requête.

+0

merci @subvertallchris, Comment vérifier deux ** params ** avec la version plus courte? : D avec ** ou ** –

+1

Vous devez utiliser la version la plus longue à ce stade. 'Client.as (: c) .where ('c.name = ~ {first_regex} OU c.occupation = ~ {second_regex}'). Params (premier_regex:/regex_1 /, second_regex:/second_regex ')'. – subvertallchris

0

La méthode find_by fonctionne comme la requête SQL où. Here is the documentation.

Client.find_by user_name: 'Mr Smith' 
    # => #<Client id: 1, user_name: "Mr Smith"> 

    Client.find_by user_name: 'non_user' 
    # => nil 
+0

merci @ new2code, mais je veux l'équivalent de 'Client.where ("prenom LIKE '% # {params [: prenom]}%'")' parce que le retour de la base de données '" entrée non valide 'I': 'O/O' attendu (ligne 1, colonne 41) \ n \ "MATCH (résultat:' User') WHERE prénom_ LIKE '% mOhA%' RETURN résultat \ "\ n ^" ' –

Questions connexes