私はそのようなツールを知りません。少なくとも、参照整合性の危険性については認識しています。では、なぜ自分を苦しめるのでしょうか。dportasが示唆しているように、そもそも外部キー参照を使用するだけです。
移行で使用するには、次のようなものを追加します。
execute('ALTER TABLE users ADD FOREIGN KEY (language_id) REFERENCES languages(id)')
ユーザーのlanguage_id列が、languagesテーブルの有効な行を参照するようにします。
DBMSによっては、これによって自動的にインデックスが作成されます。これらのタスクに使いやすいエイリアス関数を定義するrails用のプラグイン(pg_on_railsをチェックしてください)もあります。
バックアップファイルでのみ整合性をチェックすることは、エラーがすでに発生しており、データがすでに混乱している可能性があるため、無意味です。(私はそこに行ったことがあります)一方、上記のように外部キー制約を使用すると、整合性を台無しにするすべての操作が失敗します。
痛みを感じたとき(=手術を受けたとき)に歯科医に行くことと、魔法の歯磨き粉で一度歯を磨くことで、一生歯が元気になることを保証するものと考えてください。
考慮すべきもう1つのこと:破損したデータを挿入しようとするコードで例外が発生するため、アプリケーションのエラーを見つけるのがはるかに簡単になります。
したがって、外部キー制約を使用してください。これらのステートメントを既存のデータベースに簡単に追加できます。