/ / Dotaz mongoidná šnúra s držiakmi - rubínová na koľajniciach, regex, rubínová na koľajniciach-3, mongodb, mongoidná

Dotaz mongoid reťazec s zátvorkami - ruby-na-koľajnice, regex, rubín-na-koľajnice-3, mongodb, mongoid

Mám mongoidné pole “hodnota„ako reťazec“Sivatha (St. 329)“a na zisťovanie hodnoty pomocou protokolu iax používam regex takto:

Street.any_of({ :value => /.*#{params[:q]}.*/i }))

Vyvoláva chyby, zatiaľ čo moja hodnota parametra je „Sivatha (St.„keď píšem a výsledok sa vôbec nevráti, keď mám presnú hodnotu“Sivatha (St. 329)".

Môže mi niekto tu dať nejaké návrhy? Vďaka.

odpovede:

2 pre odpoveď č. 1

Mali by ste citovať reťazce Regexp.quote pred ich interpoláciou na regulárny výraz:

:value => /.*#{Regexp.quote(params[:q])}.*/i

Nepotrebujete vedenie a zaostávanie .*, nerobia pre vás nič, takže by ste mohli len povedať:

:value => /#{Regexp.quote(params[:q])}/i

Ak ste nepoužívali regulárny výraz nerozlišujúci veľké a malé písmená, môžete ho použiť Regexp.union citovať a regex-ify svoj reťazec naraz:

:value => Regexp.union(params[:q])

ale neexistuje žiadny čistý spôsob, ako pridať /i možnosť, že áno /#{Regexp.quote(params[:q])}/i je pravdepodobne to najčistejšie, čo môžete urobiť.