Итак, я использую API контактов Google, чтобы пользователи могли импортировать свои контакты из GMail.

Я хочу, чтобы пользователи могли выбирать контакты, которые они хотят импортировать в мое приложение, поэтому в настоящее время я -

  1. ПОЛУЧИТЕ XML-канал всех контактов пользователя.
  2. Разберите его и для каждого контакта создайте запись в таблице import_contacts.
  3. Отобразите список для пользователя с флажками, чтобы пользователь мог выбрать, какие контакты он хочет импортировать.
  4. Когда пользователь отправляет форму, я копирую выбранные контакты из import_contacts в основную таблицу контактов.

Это работает нормально, но кажется неправильным. Может ли кто-нибудь предложить способ сделать это без использования отдельной таблицы (import_contacts).

2
Abhishiv Saxena 4 Июл 2009 в 22:54
Для меня это выглядит прекрасно. В чем проблема с вашим подходом? Накладные расходы на сохранение пользователей, которых вы не импортируете?
 – 
Janusz
4 Июл 2009 в 22:57
Да, + с точки зрения конфиденциальности я бы не хотел, чтобы в моей базе данных были контакты, которые пользователь не разрешил мне импортировать. Я мог бы регулярно удалять такие контакты из базы данных, но я ищу еще лучший подход.
 – 
Abhishiv Saxena
4 Июл 2009 в 23:15
Я согласен - даже если Facebook делает это так: blogoscoped.com/archive/ 2009-06-12-n15.html
 – 
Julian H
5 Июл 2009 в 23:04

2 ответа

Лучший ответ

Сопоставьте контакты из XML с объектами в памяти. Сохраняйте их в основной таблице контактов только после того, как пользователь выберет те, которые ей нужны.

3
miller 4 Июл 2009 в 23:00
Но я не понимаю, как будет выглядеть код представления в такой ситуации (я использую Rails).
 – 
Abhishiv Saxena
4 Июл 2009 в 23:19
Взгляд не выглядел бы иначе. Вы будете перебирать коллекцию, просто эта коллекция будет состоять из объектов в памяти, а не из модели, соответствующей таблице.
 – 
miller
4 Июл 2009 в 23:32

Контроллер представления модели.

Импортируйте контакты в объекты Contact и сохраните в ContactRepository. Все это полностью в памяти и является вашей моделью.

При отображении этого списка в вашем представлении каждый флажок будет иметь идентификатор, который будет относиться к идентификатору объекта Contact в модели.

Когда пользователь отправляет запрос, ваш контроллер сможет запросить в представлении список выбранных флажков (и их идентификаторов), а затем пройти через модель и создать необходимые строки в базе данных.

3
Duncan 4 Июл 2009 в 23:33