create_table :categories_posts, :id => false do |t|
  t.column :category_id, :integer, :null => false
  t.column :post_id, :integer, :null => false
end

我有一个连接表(如上所述),其中的列引用了相应的categories表和posts表.我想在categories_posts join表中对the composite key category_id, post_id强制一个唯一的约束.但Rails不支持这一点(我相信).

为了避免我的数据中可能出现重复行,这些行具有相同的CATEGORY_ID和POST_ID组合,what's the best workaround for the absence of a composite key in Rails

我在这里的假设是:

  1. 默认的自动编号列 (ID:INTEGER)不会执行任何操作 在这种情况下保护我的数据.
  2. ActiveScaffold可以提供 解决方案,但我不确定是否 把它包含在我的 简单地为此单曲进行项目 功能,特别是如果有 更优雅的回答.

推荐答案

添加包括两列的唯一索引.这将防止您插入包含重复的CATEGORY_ID/POST_ID对的记录.

add_index :categories_posts, [ :category_id, :post_id ], :unique => true, :name => 'by_category_and_post'

Database相关问答推荐

将数据拆分为月份(以Postgres为单位

MongoDB事务,回调API方法

如何使用PostgreSQL列出特定数据库的表并按大小排序?

如何让 Google Drive Electron 表格像 MySQL 数据库一样工作吗?

什么技术对处理数百万条记录最有效?

何时将数据库称为嵌入式数据库?

为什么null不等于null false

使用 LiquiBase 和 Spring 将大量值(使用 FK)插入数据库

苹果 ios 购买收据数据的可能最大长度是多少?

CouchDB 和 Lotus Notes 有什么区别?

将 `tsv` 文件插入 postgresql 数据库

使用 PHPUnit 进行数据库测试的最佳实践

ORA-00060: deadlock detected while waiting for resource

customer客户表的数据库 struct ,每个客户有很多订单,每个订单有很多商品

使用 PDO 获取单行单列

Slick 3.0 在数据库驱动程序级别是reactive/asynchronous的吗?对于哪些数据库?

Django:将博客条目查看次数加一,这有效率吗?

处理多个表的最佳实践

为什么用 varbinary 而不是 varchar

数据库与平面文本文件:当性能不是问题时, Select 一个而不是另一个的一些技术原因是什么?