ruby-on-rails-3 - 使用 PostgreSQL 数据库更新 Datamapper 中的多对多关联

标签 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 上使用 datamapper 和 postgresql 数据库。有没有人遇到同样的问题?

最佳答案

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

关于ruby-on-rails-3 - 使用 PostgreSQL 数据库更新 Datamapper 中的多对多关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10385109/

相关文章:

ruby-on-rails - Rails:使用参数重定向

postgresql - Spring-Boot 不适用于 Flyway

python - 尝试将数据插入 postgresql 时出现语法错误

ruby - DataMapper 关联依赖于两列

ruby - datamapper 多字段唯一索引

ruby-on-rails - Ruby on Rails DRY 从选择性输入表单中去除空格

ruby-on-rails - 在 Rails 3.1 中,上传的文件应该存储在哪里?

ruby-on-rails - Rails 验证方法比较两个字段?

sql - 如何使用for循环函数在postgresql中插入数据?

python - 使用 QDataWidgetMapper 立即更改模型