2009-07-04 5 views
2

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

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

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

Это прекрасно работает, но не чувствует себя хорошо. Может кто-то предложить способ сделать это, не используя отдельную таблицу (imported_контакты).

+0

Это выглядит отлично для меня. В чем проблема, с которой вы сталкиваетесь? Накладные расходы на сохранение пользователей, которые вы не импортируете? – Janusz

+0

yes, + from privacy viewpoint Я бы не хотел иметь контакты в моей базе данных, которые пользователь не разрешил мне импортировать. Я мог бы регулярно удалять такие контакты из базы данных, но я ищу еще лучший подход. –

+0

@Asaxena Я согласен - даже если Facebook делает это так: http://blogoscoped.com/archive/2009-06-12-n15.html –

ответ

3

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

+0

Но я смущен тем, что будет выглядеть код вида в такой ситуации (я использую Rails). –

+0

Вид не выглядел бы иначе. Вы будете выполнять итерацию через коллекцию, просто эта коллекция будет иметь объекты в памяти, а не модель, которая соответствует таблице. – miller

3

Модель контроллера.

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

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

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

Смежные вопросы