2011-01-13 13 views
2

2つのプロセスがあり、それぞれ独自のデータベース接続を持ち、製品レコードをテーブルに挿入します。プロセスが製品をテーブルに挿入する前に、同じプロパティを持つ製品がすでに存在するかどうかを確認します。製品がすでに存在する場合、プロセスは1つのフィールドを変更して製品を保存します。それ以外の場合、プロセスは新しい製品を作成します。Railsを使用して複数の接続にまたがるレコードの重複を防止する

私は、トランザクション内でfindとcreateをラップしていますが、ActiveRecordトランザクションは単一のデータベース接続でしか動作しないため、重複した製品が挿入されます。

ActiveRecordとRailsを使用して複数のデータベース接続に重複する商品が挿入されないようにするにはどうすればよいですか?

答えて

1

テーブルにmulti-field keyを作成すると、これらのフィールドの固有の組み合わせが強制されます。その後、あなたのアプリは単にデータベースのINSERTエラーを監視することができます。

+0

正確には、データベースは真実の単一の情報源です。挿入する製品が一意であるかどうかを決定してください。 –

+0

ありがとうございます。それは私が今のところ行くつもりです。 –

関連する問題