在 Rails 项目中同时保存 uuid_ossp 和 pgcrypto
Posted
技术标签:
【中文标题】在 Rails 项目中同时保存 uuid_ossp 和 pgcrypto【英文标题】:Keeping both uuid_ossp and pgcrypto in a rails project 【发布时间】:2018-03-24 16:46:53 【问题描述】:我正在开发一个旧的 Rails 项目(rails 5),在旧的迁移中,他们使用 uuid_ossp
作为默认主键。
由于 Gemfile 没有指定 postgresql
版本,我现在使用更新版本 (9.4
) 来创建项目。在 postgresql 9.4 中,uuid_ossp
被替换为 pgcrypto
。因此当你创建一个新模型时,Rails 会报错no function gen_random_uuid()
。
我要问的是:
我是否应该让我的项目同时启用uuid_ossp
用于旧迁移和 pgcrypto
用于新迁移?
还是应该将所有内容迁移到 pgcrypto
并将 postgresql
锁定到当前版本?
因为此时我所要做的就是在config/application.rb
中启用pgcrypto
,并且一切都可以正常工作,而无需触摸、修改或锁定任何东西。
【问题讨论】:
【参考方案1】:事实证明,最好保持现状。我没有尝试从uuid_ossp
迁移到pgcrypto
,所以我不确定是否可以这样做,但有时最好的解决方案是什么都不做。
【讨论】:
以上是关于在 Rails 项目中同时保存 uuid_ossp 和 pgcrypto的主要内容,如果未能解决你的问题,请参考以下文章
SQL 语句“CREATE EXTENSION[*] IF NOT EXISTS UUID_OSSP”中的语法错误