Исправление дубликатов записей в приложении rails из формы автозаполнения - PullRequest
1 голос
/ 12 января 2012

Я создаю приложение Rails 3.1, которое позволяет людям отправлять события. Одним из полей для мероприятия является место проведения. В форме создания / редактирования поле venue_name имеет функцию автозаполнения, поэтому оно отображает места с похожим именем, но пользователь может ввести любое имя.

Когда форма отправлена, я использую find_or_create_by_name при присоединении места к модели события.

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

Проблема в том, что вполне вероятно, что со временем мы получим дубликаты, такие как «Название места проведения» и «Название места проведения» или любое количество других возможностей.

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

Это хороший подход? С точки зрения манипулирования данными было бы лучше всего обрабатывать это в транзакции? Было бы лучше добавить эту функциональность в своего рода служебный класс - или непосредственно в модель Venue?

Спасибо за ваше время.

1 Ответ

0 голосов
/ 13 января 2012

Если бы я собирался собрать подобную систему, я бы, вероятно, попытался бы найти уникальный идентификатор, который можно было бы связать с каждым местом - возможно, адрес или номер телефона?

Итак, если бы у меня был "Клубный дом" с номером телефона 503-555-1212, и кто-то пытался ввести новое место, называемое "Клубный дом", с номером телефона 503-555-1212, я мог бы отнести их к промежуточная страница, где я спрашиваю их: «Вы имели в виду это место?»

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

В противном случае вы создаете большой потенциал для ошибок на уровне администратора, а также сталкиваетесь с проблемой масштабируемости. Если ваш администратор должен просматривать 10 записей в месяц, возможно, не так уж и плохо - но если ваше приложение взлетает, а это число становится равным 1000, это быстро становится неуправляемым!

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