0

Interests と多対多の関係を持つ User というモデルがあります。

結合テーブルが次のようになっているとします。

User ID | Interest ID
---------------------
   5    |      1

このユーザーの名前 (たとえば) を編集して を呼び出すとuser.save、失敗します。

失敗する理由は、datamapper (AFAIK) が Interests との関係を再保存しようとしているためです。私が得るエラーは次のとおりです。

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

誰もこれを経験しましたか?誰でも解決策を知っていますか?助けてくれてありがとう。

アップデート

User モデルは次のようになります。

class User    
  include DataMapper::Resource

  has n, :interests, :through => Resource, :constraint => :skip  
end

Interest モデルは次のようになります。

class Interest
  include DataMapper::Resource

  has n, :users, :through => Resource, :constraint => :skip
end
4

1 に答える 1

1

コードを実行するだけの場合user.saveは、

begin
  user.save
rescue
  # DO STH MEANINGLESS
end

本当に問題を解決したい場合は、もう少し冗長にする必要があります。これは HABTM 協会ですか? アソシエーション仕様も参考になります。

于 2012-12-19T12:08:51.153 に答える