2009-07-04 4 views
2

Also verwende ich Google Kontakte API, damit Benutzer ihre Kontakte aus Google Mail importieren können.Importieren von Kontakten aus Google Mail - Design Frage

Ich möchte, dass die Benutzer in der Lage sein, um die Kontakte zu wählen, die sie wollen in meiner App importieren, also zur Zeit I -

  1. erhalten ein XML-Feed aller Kontakte ein Benutzer hat.
  2. Analysieren Sie es, und für jeden Kontakt erstellen Sie einen Datensatz in der Imported_contacts-Tabelle.
  3. Zeigen Sie die Liste dem Benutzer mit Kontrollkästchen an, damit der Benutzer auswählen kann, welche Kontakte er importieren möchte.
  4. Wenn der Benutzer das Formular absendet, kopiere ich die ausgewählten Kontakte aus importierten_kontakten in die Hauptkontakten-Tabelle.

Das funktioniert gut, aber fühlt sich nicht richtig an. Kann jemand einen Weg vorschlagen, ohne eine separate Tabelle (imported_contacts) zu verwenden?

+0

Das sieht für mich vollkommen in Ordnung. Was ist das Problem, das Sie mit Ihrem Ansatz haben? Der Aufwand beim Speichern von Benutzern, die Sie nicht importieren? – Janusz

+0

ja, + aus Sicht der Privatsphäre Ich möchte keine Kontakte in meiner Datenbank haben, die der Benutzer mir nicht zum Importieren autorisiert hat. Ich könnte solche Kontakte regelmäßig aus der Datenbank löschen, aber ich suche nach einem noch besseren Ansatz. –

+0

@Asaxena Ich stimme zu - auch wenn Facebook tut es so: http://blogoscoped.com/archive/2009-06-12-n15.html –

Antwort

3

Ordnen Sie die Kontakte aus XML den Objekten im Speicher zu. Speichern Sie sie nur in der Hauptkontakttabelle, nachdem der Benutzer die gewünschten ausgewählt hat.

+0

Aber ich bin verwirrt darüber, was der Ansicht Code in einer solchen Situation aussehen würde wie (ich benutze Rails). –

+0

Ansicht würde nicht anders aussehen. Sie würden durch eine Sammlung iterieren, nur dass diese Sammlung aus Objekten im Speicher besteht, nicht aus einem Modell, das einer Tabelle entspricht. – miller

3

Modellansicht Controller.

Importieren Sie die Kontakte in Kontaktobjekte, und speichern Sie sie in einem ContactRepository. All dies ist vollständig im Speicher und ist Ihr Modell.

Beim Rendern dieser Liste in Ihrer Ansicht hat jedes Kontrollkästchen eine ID, die sich auf die ID des Kontaktobjekts im Modell bezieht.

Wenn der Benutzer einen Antrag einreicht, kann Ihr Controller die Ansicht nach einer Liste der ausgewählten Kontrollkästchen (und deren IDs) abfragen, und dann geht es durch das Modell und erstellt die erforderlichen Zeilen in der Datenbank.