Rails 3.2 中的 PostgreSQL DATALINK 类型

Posted

技术标签:

【中文标题】Rails 3.2 中的 PostgreSQL DATALINK 类型【英文标题】:PostgreSQL DATALINK type in Rails 3.2 【发布时间】:2014-06-25 20:52:33 【问题描述】:

我想在 Rails 3.2 中使用 DATALINK 类型 (https://wiki.postgresql.org/wiki/DATALINK),但不支持。

使用此迁移文件:

def up
  change_column :images, :image_url, :datalink
  change_column :images, :source_url, :datalink
end

这会在迁移过程中显示:

PG::UndefinedObject: ERROR: type "datalink" does not exist

我尝试过使用https://github.com/dockyard/postgres_ext/tree/1-0-stable,但得到了相同的输出。 任何的想法? 或者,如何在不使用:string 的情况下安全地存储URL,因为它被转换为type character varying(255),这有点受限:

PG::StringDataRightTruncation: ERROR: value too long for type character varying(255)

而且使用:text 感觉不像,最好的方法:P

【问题讨论】:

由于您使用的是 Postgres,text 很好。如果您愿意,也可以将更长的limit 选项传递给string 【参考方案1】:

PostgreSQL 没有 datalink 类型。

您链接到的 wiki 页面是一个设计文档。我添加了一些文字来说明这一点:

这是一份设计文档,描述了 PostgreSQL 中可能尚不存在的功能的规划。请参阅您的版本的官方文档以获取有关可用功能的信息。

只需 use the PostgreSQL text datatype 或告诉 rails 不限制长度 - PostgreSQL 不要求 varchar 有长度限制,只是 Rails 愚蠢的默认设置创建了该限制。

【讨论】:

呵呵,多谢指教! (顺便说一句,“yoir”中有一个错字)

以上是关于Rails 3.2 中的 PostgreSQL DATALINK 类型的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 PostgreSQL 数组索引没有被使用(Rails 4)?

我在哪里可以阅读更多关于 Rails 3.2 的数据存储与文本字段中的键值对?

postgresql按工作日选择,包括rails中的空记录

Rails/PostgreSQL:向文本添加字符限制

如何将AngularJS $资源中的params序列化为rails 3.2兼容的参数

PostgreSQL 通知和带有 Rails 的 WebSockets