Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何通过Sequel以数组的形式检索postgresql中存储的数组?_Ruby_Postgresql_Sequel - Fatal编程技术网

Ruby 如何通过Sequel以数组的形式检索postgresql中存储的数组?

Ruby 如何通过Sequel以数组的形式检索postgresql中存储的数组?,ruby,postgresql,sequel,Ruby,Postgresql,Sequel,我有一个ruby脚本,一个postgres数据库,我使用Sequel gem连接到数据库 我想存储和检索记录,其中一些列值是数组(设置为text[]作为数据类型)。因此,我为sequel加载pg_数组扩展 我创建了一个散列{id:1,key1:Sequel.pg_数组([“lorem ipsum”,“caesar”,“quidquid id est,timeo danaos])} 我可以通过table.insert hash插入散列,它会创建外观正确的记录 id |

我有一个ruby脚本,一个postgres数据库,我使用Sequel gem连接到数据库

我想存储和检索记录,其中一些列值是数组(设置为
text[]
作为数据类型)。因此,我为sequel加载
pg_数组
扩展

我创建了一个散列
{id:1,key1:Sequel.pg_数组([“lorem ipsum”,“caesar”,“quidquid id est,timeo danaos])}

我可以通过
table.insert hash
插入散列,它会创建外观正确的记录

 id |                          key1                          
----+--------------------------------------------------------
 1  | {"lorem ipsum",caesar,"quidquid id est, timeo danaos"}
基于这个有利的结果,我推断
数据库
续集gem
pg_数组
扩展都设置正确

但是,当我使用
advisors.where(id:1)通过
sequel
再次检索记录时,我得到了这个

[{:id => 1, :key1 => "{\"lorem ipsum\",caesar,\"quidquid id est, timeo danaos\"}"}]
:key1
的值作为
字符串返回。我无法理解这些文件的头绪。是否有人有办法将其直接转换回最初的阵列:
[“lorem ipsum”、“caesar”、“quidquid id est、timeo danaos”]

非常感谢您的新手检查,在您的模型中添加以下内容

serialize :key1, Array

这通常是在将
pg_数组
扩展加载到
Sequel::Database
实例中时处理的。也许您只是加载了
pg_数组
扩展文件,而没有将其加载到
Sequel::Database
实例中。你可能已经做到了:

Sequel.extension :pg_array
而不是:

DB.extension :pg_array

您需要将
pg_array
扩展加载到
Sequel::Database
实例中,以使检索到的值类似于数组而不是字符串。

感谢您的快速回复。我没有使用Rails,所以我不确定这是否适用。我可以创建一个模型,但它将无法根据您的链接从ActiveRecord::Base继承。正如预期的那样,在您的解决方案之后,我会出现以下错误:
(Adviser:Class的未定义方法“serialize”)
。这是因为我的模型无法从ActiveRecors继承,因为在此设置中我不使用rails。