Ich arbeite mit Rails 4.2 und Postgres 9.4, um den neuen JSONB-Datentyp auszuprobieren. Eine der JSONB-Spalten in meiner Datenbank enthält ein Array, und ich möchte in der Lage sein, nach Datensätzen zu suchen, in denen dieses Array einen bestimmten Wert enthält. Ich finde heraus, wie dies zu tun, um die neue JSONB „Fragezeichen“ („enthält“) Operator, wie hier dokumentiert: http://www.postgresql.org/docs/9.4/static/functions-json.htmlWie kann man entkommen? (Fragezeichen) Operator zum Abfragen von Postgresql JSONB-Typ in Rails
So in roher SQL kann ich dies wie in diesem Beispiel zu arbeiten:
SELECT * FROM people WHERE roles ? '32486d83-4a38-42ba-afdb-f77ca40ea1fc';
Aber ich kann keine Möglichkeit sehen, diese Abfrage aus Rails über ActiveRecord zu tun. Ich habe versucht, eine rohe Abfrage tun das „wo“ -Methode wie folgt verwendet:
Person.where("roles ? ?", "32486d83-4a38-42ba-afdb-f77ca40ea1fc")
Aber da das Fragezeichen ein Sonderzeichen verwendet Parameter zu ersetzen, erhalte ich diese Fehlermeldung:
ActiveRecord::PreparedStatementInvalid: wrong number of bind variables (1 for 2) in: roles ? ?
Ich denke, ich brauche einen Weg, um dem "?" Charakter, da ich es wörtlich passieren möchte. Ich habe es versucht \? und ?? ohne Glück. Jede Hilfe wird geschätzt!
versuchen, diese ' Person.where ("Rollen? (?)", "32486d83-4a38-42ba-afdb-f77ca40ea1fc") ' –
oder' Person.where ("Rollen?: Name", Name: "32486d83-4a38-42ba-afdb- f77ca40ea1fc ")' –
Funktioniert es für Sie ??? –