使用PostgreSQL数据库在Datamapper中更新多对多关联

时间:2012-04-30 14:09:19

标签: ruby-on-rails-3 postgresql datamapper

我在两个模型之间有很多关系:用户和兴趣。

当我迁移数据库时,会创建一个interest_users表,其中包含两列:user_id和interest_id。

创建用户记录很好,链接表中的行可以很好地创建。但是,当我更新记录时,我得到以下内容:

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

这意味着不会创建新的用户兴趣链接。而且我似乎无法删除链接。

我在rails 3上使用带有postgresql数据库的datamapper。还有其他人有同样的问题吗?

1 个答案:

答案 0 :(得分:1)

你应该确定它是否是UPDATE以及它是否正在尝试更改(设置)字段user_id,interest_id。很多时候这是因为WHERE子句没有考虑主键字段。另一种可能性是已存在的密钥(user_id,interest_id)=(1,2)是孤儿数据,如果是这样,您应该确保在关系中启用了一些:constraint => :destroy