Rails 多主键的数据库

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

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

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

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

大家什么意见?谢谢

共收到 11 条回复

为什么不在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?

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