2013-10-23 85 views
3

我有一個收件箱系統,但我不確定如何實現對功能的回覆。所有消息應該屬於某個其他實體,例如一個對話」。當第一條消息被創建時,對話也被創建。隨後的所有消息都是該會話的一部分。對話只能在兩個用戶之間進行,沒有允許用戶轉發消息或添加更多人到對話的選項。如果用戶使用「回覆」動作來回交換多個消息,用戶應該能夠在視圖中查看他們過去的消息。這樣做的要求是什麼?我應該創建一個對話模型還是可以將新列添加到消息表conversation_id。如果用戶回覆消息ID 27,則它將創建新的消息ID 28,並且conversation_id值將是27.然後,我可以僅從conversation_id 27做出desc。這將顯示屬於ID 27的所有消息的歷史將消息添加到消息的最佳路線

回答

0

你想在你的new動作中填入新的Messagerecipient_id?是對的嗎?

如果對話被保證只有兩個用戶,你可以不喜歡

current_conversation.users.select { |u| u.id != current_user.id }

User.joins(:conversations).where("conversations.id = ? AND users.id != ?", current_conversation.id, current_user.id).first

您正在使用的短語 「回覆」,所以我假設對話已經存在。如果沒有,作者必須在對話中指定其他用戶。

+0

如果您認爲否則請僅僅向我解釋它,因爲從我正在閱讀的內容來看,它不會是對以前的消息的功能回覆。請記住在消息視圖的回覆中,我將顯示對話的線程歷史記錄(就像所有收件箱郵件系統一樣)。同樣你也是對的,對話總是隻有兩個用戶。 – pwz2000