2017-07-14 77 views
2

我使用Ruby Sequel的pg_array擴展。Ruby Sequel:查詢返回的數組作爲String對象返回,而不是Array對象

當我選擇一個Postgresql數組的列時,結果是Ruby中的一個字符串。我怎樣才能讓它成爲一個Ruby數組,以便我可以使用諸如.each之類的東西呢?

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

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

我們的數據庫配置包括:

Sequel.extension :pg_array, :pg_inet, :pg_json 

而這次移植到添加列包含在此:

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

我可以寫原始SQL來訪問單個元素的數組:

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

請編輯您的問題,以包含配置Sequel以使用此列的pg_array擴展名的代碼。 –

+0

@JordanRunning你在找什麼? –

回答

2

您需要使用DB.extension :pg_array, :pg_inet, :pg_json,而不是Sequel.extension :pg_array, :pg_inet, :pg_json。否則,您只需要這些文件而不修改Sequel :: Database實例的配置。

+0

太棒了,謝謝。只需確認:'DB = Sequel :: Model.db'吧? –

相關問題