使用Rails防止跨多个连接的重复记录

时间:2011-01-13 17:15:36

标签: ruby-on-rails database activerecord transactions

我有两个独立的进程,每个进程都有自己的数据库连接,将产品记录插入表中。在流程将产品插入表中之前,它会检查具有相同属性的产品是否已存在。如果产品已存在,则该过程会修改一个字段并保存产品。否则,该过程将创建一个新产品。

我在事务中包装查找和创建,但仍会插入重复的产品,因为ActiveRecord事务仅作用于单个数据库连接。

防止使用ActiveRecord和Rails在多个数据库连接中插入重复产品的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以在表格上创建multi-field key,这将强制执行这些字段的唯一组合。然后,您的应用只能查看数据库INSERT错误。