哪个 Ruby ORM 支持 PostgreSQL 数组数据类型?

Posted

技术标签:

【中文标题】哪个 Ruby ORM 支持 PostgreSQL 数组数据类型?【英文标题】:Which Ruby ORM supports PostgreSQL's Array Datatype? 【发布时间】:2011-05-06 14:34:27 【问题描述】:

我需要找到一个支持 PostgreSQL 的 Array 列数据类型的 Ruby ORM(Active Record、Sequel 等)。

http://www.postgresql.org/docs/8.2/interactive/arrays.html

有什么建议吗?

【问题讨论】:

【参考方案1】:

Sequel 的sql_subscript 仅用于在查询时访问值,正如您在之前的评论中提到的那样。

除此之外,Sequel 没有对数据库数组的特殊支持。您可以在 create_table 块中创建数组:

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

但这并不是特殊的支持,因为 Sequel 只是传递类型。在构建查询时不支持将 ruby​​ 数组转换为 PostgreSQL 数组,也不支持在检索时将 PostgreSQL 数组转换为 ruby​​ 数组(它将作为字符串返回)。

话虽如此,Sequel 的设置使得 PostgreSQL 的数组和提供完全集成的 hstore 类型的扩展可以相对容易地实现。有人一直在做对hstore的支持(我觉得已经完成或者接近了,但是我还没有审核过),对数组的支持应该和那个差不多。未来版本的 Sequel 很可能会默认提供此类支持或作为官方扩展提供。

【讨论】:

我认为现在应该更新答案:ruby-forum.com/topic/3984710 ;)【参考方案2】:

Sequel 通过 Symbols(和其他)上的 sql_subscript 方法支持这一点。

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

【讨论】:

如何使用 Sequel 将 ARRAY 值插入到新记录中? sql_subscript 看起来像一个只读访问器 自从我在 Postgres 中使用该数据类型已经有一段时间了,但是,我认为它实际上是作为字符串类型实现的。我将它用于某事并在我的代码中按摩值,我怀疑这是我通过 DBI 在 Perl 中所做的事情。已经好几年了,我没有访问代码,所以我无法查到它。 感谢您的提示。我刚刚结束了直接使用较低级别的 'pg' postgres 驱动程序。

以上是关于哪个 Ruby ORM 支持 PostgreSQL 数组数据类型?的主要内容,如果未能解决你的问题,请参考以下文章

哪个 Java ORM 框架支持 MongoDB 中的文档多态性?

Heroku上的现有Ruby on Rails Web应用程序(PostgreSQL),Devise身份验证,需要为移动支持添加Rails API

哪个 .net ORM 可以处理这种情况

什么是 spring data jpa 以及它使用哪个 orm 框架?

与 PostgreSQL 一起使用的 Mono ORM?

PostgreSQL 和 Oracle 对象关系存储是不是与 ORM 相同?