1

User と Interest の 2 つのモデルの間には、かなりの多対多の関係があります。

データベースを移行すると、interest_users テーブルが作成され、user_id と interest_id の 2 つの列が作成されます。

ユーザー レコードの作成は問題なく、リンク テーブルの行は問題なく作成されます。ただし、レコードを更新すると、次のようになります。

ERROR:  duplicate key value violates unique constraint "interest_users_pkey"
DETAIL:  Key (user_id, interest_id)=(1, 2) already exists.

これは、新しいユーザーの関心事項のリンクが作成されないことを意味します。さらに、リンクを削除することもできないようです。

postgresql データベースを使用して Rails 3 で datamapper を使用しています。他の誰かが同じ問題を抱えていましたか?

4

1 に答える 1

1

それが UPDATE であるかどうか、およびフィールド user_id、interest_id を変更 (設定) しようとしているかどうかを確認する必要があります。多くの場合、これは WHERE 句が主キー フィールドを考慮していないことが原因です。もう 1 つの可能性は、既に存在するキー (user_id, Interest_id)=(1, 2) が孤立したデータであるということです:constraint => :destroy

于 2012-05-08T16:49:48.480 に答える