Rails 多主键的数据库

allenlsy · 2013年10月08日 · 最后由 safir 回复于 2016年02月15日 · 3191 次阅读

在 Rails 开发中一般大家怎么实现多主键的数据表呢?

比如,我有一个表叫做 PURCHASE,用于存储用户购买商品的记录。里面有 user_id 和 product_id。我希望 [user_id, product_id] 是主键组,这样用户不能重复购买。

听说的解决方案有使用 uuid,或者 Composite Primary Keys 这个 gem。

大家什么意见?谢谢

为什么不在 model 中处理好这件事情?

非要放到数据库,唉。

给 user_id 和 product_id 建立 composite index,并且设置 unique

建立索引就可以了

validates :user_id, :uniqueness => { scope: :product_id }

别用数据库来处理这个问题。

一般这个表应该叫做 line_items 的...

我用 Composite Primary Keys

#2 楼 @quakewang +1 composite index unique

#4 楼 @ch3n #2 楼 @quakewang 谢谢你们的解答。

#1 楼 @xiaoronglv 在 model 当然能做,只是不知道哪种方法更合理。据说有很多操作,放在 DB 去做,会比在 Rails 的框架内做效率高,有这说法么?

各位大大,我是个小白,如果数据库有 3 个主键 user_id、 product_id 和 flag 那么需要怎么写联合索引和 unique?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册