Предотвращение дублирования записей через несколько соединений с помощью Rails - PullRequest
2 голосов
/ 13 января 2011

У меня есть два отдельных процесса, каждый со своим подключением к базе данных, вставляя записи о продуктах в таблицу.Прежде чем процесс вставит продукт в таблицу, он проверяет, существует ли продукт с такими же свойствами.Если продукт уже существует, процесс изменяет одно поле и сохраняет продукт.В противном случае процесс создает новый продукт.

Я обертываю поиск и создание в транзакции, но дублирующие продукты по-прежнему вставляются, поскольку транзакции ActiveRecord действуют только на одно соединение с базой данных.

Каков наилучший способ предотвращения вставки дублированных продуктов в несколько подключений к базе данных с использованием ActiveRecord и Rails?

1 Ответ

1 голос
/ 13 января 2011

Вы можете создать многопольный ключ на таблице, который будет применять уникальные комбинации этих полей. Затем ваше приложение может просто следить за ошибками INSERT базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...