私のRails移行の1つは、主キーとしてuuidを使用します。Postgres拡張機能gen_random_uuid()
はこの問題を解決するはずですが、関連する拡張機能をインストールした後もエラーが発生し続けます( uuid-ossp
)。
問題は、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
エッジケースの答え:
上記のように拡張機能を有効にする移行を追加します。
以前にbigint
IDを持っていて、UUID
に変換している場合、rake db:reset db:migrate
の実行は失敗しました。上記のように、必ずrake db:drop db:create db:migrate
を実行してください。
エラーEnvironment data not found in the schema
が発生した場合は、bin/Rails db:environment:set Rails_ENV=development
を実行してください。