【发布时间】:2011-05-06 14:34:27
【问题描述】:
我需要找到一个支持 PostgreSQL 的 Array 列数据类型的 Ruby ORM(Active Record、Sequel 等)。
http://www.postgresql.org/docs/8.2/interactive/arrays.html
有什么建议吗?
【问题讨论】:
标签: ruby postgresql orm activerecord datamapper
我需要找到一个支持 PostgreSQL 的 Array 列数据类型的 Ruby ORM(Active Record、Sequel 等)。
http://www.postgresql.org/docs/8.2/interactive/arrays.html
有什么建议吗?
【问题讨论】:
标签: ruby postgresql orm activerecord datamapper
Sequel 的sql_subscript 仅用于在查询时访问值,正如您在之前的评论中提到的那样。
除此之外,Sequel 没有对数据库数组的特殊支持。您可以在 create_table 块中创建数组:
DB.create_table do
column :numbers, 'integer[]'
end
但这并不是特殊的支持,因为 Sequel 只是传递类型。在构建查询时不支持将 ruby 数组转换为 PostgreSQL 数组,也不支持在检索时将 PostgreSQL 数组转换为 ruby 数组(它将作为字符串返回)。
话虽如此,Sequel 的设置使得 PostgreSQL 的数组和提供完全集成的 hstore 类型的扩展可以相对容易地实现。有人一直在做对hstore的支持(我觉得已经完成或者接近了,但是我还没有审核过),对数组的支持应该和那个差不多。未来版本的 Sequel 很可能会默认提供此类支持或作为官方扩展提供。
【讨论】:
Sequel 通过 Symbols(和其他)上的 sql_subscript 方法支持这一点。
最初通过 Symbol#| 和 Symbol#/ 在 0.4.3 版(2007 年 12 月)中添加了支持,但在 2.12.0 版(2009 年 4 月)中更改为使用新方法。搜索 CHANGELOG 以了解更多关于随着时间的推移而发生的改进。
【讨论】: