Rails + Postgres迁移 - 为什么我收到错误"PG :: UndefinedFunction:ERROR:function gen_random_uuid()不存在"?

use*_*381 10 postgresql uuid ruby-on-rails rails-migrations

我的一个Rails迁移使用uuid作为主键.Postgres扩展gen_random_uuid()应该解决这个问题,但是在安装相关的扩展(uuid-ossp)之后我继续得到错误.

use*_*381 28

问题是,uuid-ossp每次我删除数据库作为重置和迁移的一部分时,扩展都被数据库所震撼(例如rake db:drop db:create db:migrate).

修复方法是创建在启用相关扩展的所有其他迁移之前运行的迁移.像这样(db/migrate/0_enable_extensions.rb):

class EnableExtensions < ActiveRecord::Migration[5.1]
  def change
    enable_extension 'uuid-ossp'
    enable_extension 'pgcrypto'
  end
end
Run Code Online (Sandbox Code Playgroud)