Ruby / Rails, проверка уникальности ActiveRecord и гем activerecord-import - PullRequest
1 голос
/ 27 февраля 2012

В моем RESTful API у меня есть проверка уникальности для некоторого столбца базы данных "X" в моем классе ActiveRecord, и я использую activerecord-import gem для массового сохранения данных.Мое приложение должно отклонять запросы в обоих следующих случаях:

  1. Отклонить новый объект, если в БД существует запись с таким же значением "X"
  2. Отклонить объем-сохранение двух объектов с одинаковым значением "X"

Кажется, что (1.) работает нормально, а (2.) - нет.Следует ли ожидать этого (возможно, потому что проверка уникальности ActiveRecord выполняется «вне» БД), и если да, есть ли простой способ решения этой проблемы, кроме проверки вручную перед импортом новых данных?

1 Ответ

1 голос
/ 27 февраля 2012

Камень activerecord-import обеспечивает проверку по умолчанию , но, возможно, обрабатывает проверку уникальности по-другому.Если база данных поддерживает это, существует on_duplicate_key_update, который обновит другой столбец, если найдет дубликаты ключей. Подробнее об этом в вики .MySql поддерживает это.

Таким образом, вы можете иметь столбец типа флага, который обновляется с помощью on_duplicate_key_update всякий раз, когда предпринимаются попытки сохранить дубликаты.Или вам нужно выполнить одно подтверждение вручную

Редактировать Ответ может быть неправильным, подробности см. В комментариях OP.

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