2012-04-05 12 views
0

ich die folgende Nachricht ModellRoR - Private Nachrichten Antworten Algorithmus

belongs_to :from_user, class_name: 'User' 
belongs_to :to_user, class_name: 'User' 
belongs_to :thread, class_name: 'Message', foreign_key: 'parent_message_id' 
has_many :replies, class_name: 'Message' 
attr_accessible :subject, :body 
scope :original_message, where("parent_message_id IS NULL") 

ich habe die Ansichten alle eingerichtet, um die Nachrichten als Thread angezeigt werden, und ich möchte setzen, um eine schnelle Antwort haben Form an der Unterseite. Ich bin völlig in der Lage, den besten Weg zum Setzen von to_user zu finden, da jede Nachricht im Thread dem aktuellen Benutzer oder dem Benutzer am anderen Ende gehören kann. Irgendein Rat?

Antwort

0

Wenn es nur zwei Benutzer im Thread sind, dann können wir davon ausgehen, dass entweder from_user oder to_usercurrent_user ist, was die ein Mittel, das nicht current_user ist die andere Partei ist. Und so:

orig_msg = @thread.messages.original_message 

if orig_msg.from_user == current_user 
    other_user = orig_msg.to_user 
else 
    other_user = orig_msg.from_user 
end 

Oder:

other_user = orig_msg.to_user 
other_user = orig_msg.from_user unless orig_msg.from_user == current_user 

Oder:

other_user = orig_msg.from_user == current_user ? 
       orig_msg.to_usr : orig_msg.from_user 
+0

Würde diese Arbeit in der Modellschicht? 'def other_user (user) from_user == Benutzer? to_user: from_user Ende' – DVG

+0

Im Nachrichtenmodell? Ja. –

0

Ich hatte eine ähnliche Anforderung und was ich getan habe, wurde Javascript hinzugefügt, um die Antwort Textarea herum zu bewegen, basierend auf der Schaltfläche "Antworten" der Thread geklickt wurde.

Auf Antworten, stellen Sie die Variable, auf die der aktuelle Benutzer Post ist die Beantwortung und basierend auf den Besitzer des Post Sie die to_user hinzufügen

Wenn ihr eine flache Gespräch (wie in einem Forum) oder ein Gewinde Konversation wie in railscasts.com, sollte dies funktionieren.

Verwandte Themen