3

受信トレイ システムを使用していますが、返信機能を実装する方法がわかりません。すべてのメッセージは、「会話」などの他のエンティティに属している必要があります。最初のメッセージが作成されると、会話も作成されます。その後のすべてのメッセージは、その会話の一部になります。会話は 2 人のユーザー間でのみ行うことができます。メッセージの転送を許可したり、会話に他のユーザーを追加したりするオプションはありません。ユーザーが「返信」アクションを使用していくつかのメッセージをやり取りする場合、ユーザーはビューでその会話からの過去のメッセージを表示できる必要があります。これを行うための要件は何ですか?会話モデルを作成する必要がありますか、またはメッセージ テーブルに新しい列を追加できますかconversation_id。ユーザーがメッセージ ID 27 に返信すると、新しいメッセージ ID 28 が作成され、conversation_idvalue は 27 になります。その後、27 から desc を実行できconversation_idます。これにより、id 27 に属するすべてのメッセージの履歴が表示されます。

4

2 に答える 2

0

Mailboxer Gem の sourcecodeを見てみると、そこにいくつかの答えが見つかるかもしれません。

于 2013-11-10T15:37:11.500 に答える
0

recipient_idアクションに新しいものを追加Messageしますかnew? そうですか?

会話に2人のユーザーしかいないことが保証されている場合、次のようにすることができます

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

「返信先」というフレーズを使用しているため、会話が既に存在すると想定しています。そうでない場合、作成者は会話で他のユーザーを指定する必要があります。

于 2013-10-29T10:37:33.930 に答える