Bevorzugter Weg zur Modellierung privater Nachrichten in Rails 3

7

Ich plane, ein privates Nachrichtensystem zwischen den Mitgliedern zu implementieren. Ich frage mich, was sind die bevorzugten Ansätze dazu.

Anforderungen sind

  1. Ich sollte in der Lage sein, sie leicht als etwas wie das zu erhalten

    %Vor%
  2. Beim Aufruf von @ user.conversations sollten nur die Personen abgerufen werden, die mir Nachrichten oder Personen gesendet haben, an die ich Nachrichten sende. current_user sollte ausgeschlossen werden.

  3. Wenn ich sender_id = 5 bin und an to_id = 10 sende, antwortet die andere Person als Absender = 10 to_id = 5. Dies sollte als das gleiche Konversationsobjekt betrachtet und verstanden werden.

Zum letzten Punkt. Ich bin nicht sicher, was der bevorzugte Ansatz zum Modellieren ist.

Es wird bevorzugt, ein Konversationsmodell zu verwenden, um alle Nachrichten wie

zu verarbeiten %Vor%

Oder es ist bevorzugt, ein Konversationsmodell für die Zuordnung und ein Nachrichtenmodell für Nachrichten zu erstellen.

Ich würde gerne Beispiele dafür sehen, wie diese Beziehung implementiert werden kann und ob es eine zusätzliche Methode zur Implementierung gibt.

Ich bin hier ein bisschen verloren.

    
Martin 27.02.2011, 00:50
quelle

4 Antworten

12

Ein viel einfacheres Modell ist es, jede Nachricht zu erfassen:

%Vor%

Wenn Sie die Nachrichtenthreads erfassen müssen, kann jede Nachricht, die eine Antwort ist, einen Verweis auf die ursprüngliche Nachricht speichern, die die Konversation (auch Thread genannt) startet. Zum Beispiel:

%Vor%     
Winfield 27.02.2011, 00:58
quelle
4

acts_as_messageable ist ein bisschen in die Jahre gekommen, sollte dir aber ein paar Ideen geben.

    
zetetic 27.02.2011 01:19
quelle
2

Wenn Sie dieses DB-Modell verwenden:

%Vor%

Ich denke, Sie müssen Folgendes bereitstellen: finder_sql in: has_many, etwas Ähnliches

%Vor%     
Milan Jaric 27.02.2011 01:08
quelle
1

Wäre Sie, ich wäre mit IMAP gegangen, anstatt die DB für solche Modellierung zu verwenden.

Sehen Sie hier nach, um weitere Einzelheiten zu erfahren.

    
khelll 27.02.2011 06:06
quelle