0

我有以下私信模型

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")

我已将所有视图设置为将消息显示为线程,并且我想在底部放置一个快速回复表单。对于设置 to_user 的最佳方式,我完全是脑筋急转弯,因为线程中的任何给定消息都可能属于当前用户或另一端的用户。有什么建议吗?

4

2 回答 2

0

我有类似的要求,我所做的是添加 javascript 以根据单击线程的“回复”按钮的位置移动回复文本区域。

在回复时,您可以设置当前用户正在回复的帖子的变量,并且根据帖子的所有者,您可以添加 to_user

如果是平面对话(如在论坛中)或像在railscasts.com中的线程对话,这应该可以。

于 2012-04-05T18:56:27.490 回答
0

如果线程中只有两个用户,那么我们可以假设from_useror to_useris current_user,这意味着不是的那个是current_user另一方。所以:

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

或者:

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

或者:

other_user = orig_msg.from_user == current_user ?
               orig_msg.to_usr : orig_msg.from_user
于 2012-04-05T19:06:10.130 回答