2017-07-14 2 views
2

Ich verwende die pg_array Erweiterung von Ruby Sequel.Ruby Sequel: Von der Abfrage zurückgegebenes Array wird als String-Objekt und nicht als Array-Objekt zurückgegeben

Wenn ich eine Spalte auswählen, die ein Postgresql-Array ist, ist das Ergebnis eine Zeichenfolge in Ruby. Wie bekomme ich das, um ein Ruby-Array zu sein, so dass ich Dinge wie .jeach verwenden kann?

CaseTypeCategory.first(category_name: 'Subscription')[:values] 
=> "{value_one,value_two}" 

CaseTypeCategory.first(category_name: 'Subscription')[:values][0] 
=> "{" 

Unsere Datenbank Config beinhaltet:

Sequel.extension :pg_array, :pg_inet, :pg_json 

Und die Migration die Spalten hinzufügen diese enthalten:

alter_table :case_type_categories do 
    add_column :values, "text[]" 
end 

ich roh SQL schreiben können einzelne Elemente in dem Array zuzugreifen:

select values[1] from case_type_categories where category_name = 'Subscription' 
+0

Bearbeiten Sie Ihre Frage so, dass der Code, mit dem Sie Sequel konfigurieren, mit der Erweiterung pg_array für diese Spalte ergänzt wird. –

+0

@JordanRunning Ist das wonach Sie gesucht haben? –

Antwort

2

Sie brauchen zu verwenden DB.extension :pg_array, :pg_inet, :pg_json, nicht Sequel.extension :pg_array, :pg_inet, :pg_json. Andernfalls benötigen Sie nur die Dateien, ohne die Konfiguration für die Sequel :: Database-Instanz zu ändern.

+0

Super, danke. Nur um zu bestätigen: 'DB = Sequel :: Model.db' oder? –

Verwandte Themen