2011-01-13 61 views
2

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

我在事务中包装查找并创建,但重复的产品仍然被插入,因为ActiveRecord事务只对单个数据库连接起作用。

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

回答

1

您可以在表上创建一个multi-field key,这将强制这些字段的唯一组合。然后,您的应用程序只能监视数据库INSERT错误。

+0

确切地说,数据库就是这里真相的唯一来源。让* it *决定要插入的产品是否是唯一的。 – 2011-01-13 17:39:01