哪个 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