2016-07-13 9 views
1

Wie bekomme ich alle Datensätze von db, die angegebene Zeichenfolge ohne Leerzeichen entsprechen?Active Record Query 'wo' Leerzeichen zu ignorieren

Zum Beispiel:

db Rekord: "Hello beautiful world!"

gegeben string: name = "Hello beau tifulworld !"

Ist es möglich, sie als Active Record-Abfrage zu machen?

+1

Dies ist nicht wirklich ein ActiveRecord-Problem, denke ich nicht. Sie werden wahrscheinlich in SQL eine Lösung dafür finden müssen, welche Regex-Unterstützung Ihre spezifische Datenbank bietet, und dann eine Zeile von raw sql an die Active Record Query übergeben. Oh, und nicht mein Downvote. – jaydel

Antwort

2

Sie können nach Namen ohne Leerzeichen suchen. So etwas wie dies (für Postgres):

Model.where("replace(name, ' ', '') = replace(?, ' ', '')", 'Hello beau tifulworld !') 
+0

Danke, eigentlich gehe ich wie folgt vor: '' 'name =" Hallo beau tifulworld! " Model.where ("replace (name, '', '')) = ersetzen (?, '', '')", "# {Name}") '' ' – Zelenka

0

Was mir in den Sinn kommt, ist, dass Sie die Datensätze nach sortierten Namen von beiden Seiten suchen. Ich meine, zuerst in einem neu erstellten Array mit den Namen und IDs der Datensätze, die Sie die Datensatznamen sortieren, durch so etwas wie

record.name.chars.sort.join und auch Sie sortieren Sie Ihre matching_word = "Hello beautiful world!"

zu bekommen !Habdeefilllloortuuw"

Dann können Sie die IDs der Datensätze abrufen, die diesem Helpernamen entsprechen. Im nächsten Schritt können Sie diese Datensätze aus der Datenbank abrufen.

Viel Glück!