, damit ich eine diese Spalte in einer Tabelle haben t.text "foo", default: [], array: true
Rails Abfrage Vergleich gegen Postgres Array Spalte
Und ich habe dieses Array-Liste in einer Hilfsdatei,
module HelperData
Helper_array = [
"data_1",
"data_2",
"data_3",
"data_4",
"data_5"
]
end
Im Inneren des FooName.rb
Modell gibt es eine Linie include HelperData
.
Also die Abfrage, die ich übergeben möchte, ist der Include-Operator &&
im Vergleich von PG-Arrays, basierend auf dieser Postgres Guide.
Ich habe die folgenden Abfragen versucht:
FooName.where("foo" && HelperData::Helper_array)
. Diese Abfrage gibt den Fehler ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR:
zurück. Der Syntaxfehler liegt bei den Elementen in HelperData::Helper_array
. Ich habe eine leichte Ahnung, dass es ist, weil Foo
:text
ist, aber die Daten in Helper_array
ist ein string
, obwohl ich nicht sicher sein kann.
FooName.where("foo && HelperData::Helper_array")
. Diese Abfrage gibt den Fehler ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR:
zurück. Offensichtlich ist das dann nur die falsche Syntax.
Was ist die richtige Abfrage zu finden, ob die foo
Array keine Elemente hat, die mit dem Helper_array
überlappen, und kehren alle FooName
Objekte, die Elemente überlappende hat?
'Active :: StatementInvalid: PG :: UndefinedFunction: ERROR: Operator existiert nicht: Text [] && character varying []' diese Wirft Error. – angkiki
em, Entschuldigung dafür, finden Sie heraus, dass die Spalte "Text" -Typ, nicht "String" -Typ ist. Versuchen Sie 'FooName.where (" foo && ARRAY [?] :: text [] ", HelperData :: Helper_array)'. Ich habe es in meiner Rails-Konsole getestet, es funktioniert. –
Okay danke! Ich werde es testen und überprüfen Sie Ihre Antwort als richtig, wenn es funktioniert! :) – angkiki