更新:さて、Rails をデバッグしたところ、両方のテーブルの名前が同じであることが原因であることがわかりました。
validates_uniquness_of
unscoped
モデルのクラスを呼び出します。unscoped
従来のテーブルからすべての行を返します。
元の投稿:ある Rails アプリケーションから別の Rails アプリケーションへのレガシー データの移行を作成しています (両方の DB は Postgresql です)。
私の新しいアプリケーションにはvalidates_uniqueness_of
、モデルの 1 つの検証があります。
ここで説明したように、レガシー DB への接続を確立するレガシー モデル クラスを作成しました ( を使用establish_connection :legacy
)。アプリケーション レベルの移行中に、レガシー テーブルからモデル データをコピーして、新しいアプリケーションに行ごとに新しいモデルを作成します。一意性の検証が失敗するため (新しい DB がまだ空であっても)、最初のモデル作成でプロセスが失敗します。
validates_uniqueness_of
これは、何らかの理由でレガシーDBも考慮に入れていると信じています。
検証を行ったモデルのテーブルは、従来のデータベースと新しいデータベースの両方で同じ名前を持っています。