2011-05-06 22 views

回答

3

续集的sql_subscript仅用于在查询时访问值,正如您在之前的评论中所述。

续集对此数据库阵列没有特别的支持。您可以在CREATE_TABLE块创建数组:

DB.create_table do 
    column :numbers, 'integer[]' 
end 

但是,这并不是特别支持,因为续集刚好路过式通过。在构建查询时,没有内置的支持来获取ruby数组并将其转换为PostgreSQL数组,并且也不支持在检索时将PostgreSQL数组转换为ruby数组(它将作为字符串返回)。

也就是说,Sequel的设置使得PostgreSQL的数组和hstore类型的扩展可以相对容易地实现。有人一直在致力于支持hstore(我认为它已经完成或接近它,但我还没有审查过),并且对阵列的支持应该与此类似。未来版本的Sequel很可能会在默认情况下提供这种支持,或者以官方扩展的形式提供。

+0

现在应该更新答案,我认为:http://www.ruby-forum.com/topic/3984710;) – Electro 2012-10-17 13:57:55

0

续集支持通过符号(和其他)上的sql_subscript方法。

支持最初是通过版本0.4.3(2007年12月)通过Symbol#|Symbol#/添加的,但更改为在版本2.12.0(2009年4月)中使用新方法。搜索CHANGELOG以获得更多随时间推移而发生的改进提及。

+0

你会如何将ARRAY值插入Sequel的新记录中? sql_subscript看起来像只读访问器 – dan 2011-05-06 15:41:23

+0

我在Postgres中使用这种数据类型已经有一段时间了,但是,我认为它实际上是作为字符串类型实现的。我用它做了一些事情,并在我的代码中进行了按摩,我怀疑这是我通过DBI在Perl中完成的。已经有好几年了,我无法访问代码,所以我无法查看它。 – 2011-05-06 18:47:50

+0

感谢您的提示。我最终直接使用了较低级别的“pg”postgres驱动程序。 – dan 2011-05-06 19:29:06

相关问题