It depends on many things, but trying the first guess may be a self-referential table of "messages." For instance:
message: sender_id: User recipient_id: User in_reply_to_id: Message subject, content, etc
The message looks like this:
belongs_to :sender, :class => 'User' belongs_to :recipient, :class => 'User' has_many :replies, :dependent => :destroy belongs_to :in_reply_to, :class => 'Message'
This will allow you to create a response tree (because the message may be in_reply_to the message, which in turn may be in_reply_to another message). You might also consider using something like act_as_ordered_tree for more flexibility and control.
sigre source share