Ruby on rails 3.2 rails的消息传递gems具有按线程分组消息的能力

Ruby on rails 3.2 rails的消息传递gems具有按线程分组消息的能力,ruby-on-rails-3.2,rubygems,messaging,Ruby On Rails 3.2,Rubygems,Messaging,我有一个rails 3应用程序。我想添加具有以下功能的内部消息系统: 用户有许多消息(发送和接收) 要发送消息,用户可以在“收件人”字段中键入一封或多封电子邮件。每封电子邮件都是自动完成的(不需要在gem中) 邮件可以标记为已读、未读和垃圾 消息按线程分组:如果Bob向Alice发送消息,Alice回复,然后Bob再次回复,Bob在其收件箱中只看到此对话的一个条目。(很像Gmail) 你知道有什么宝石可以帮我吗 其中最流行的是Mailboxer()。但是我不太喜欢这个模型(通知而不是消息,对

我有一个rails 3应用程序。我想添加具有以下功能的内部消息系统:

  • 用户有许多消息(发送和接收)
  • 要发送消息,用户可以在“收件人”字段中键入一封或多封电子邮件。每封电子邮件都是自动完成的(不需要在gem中)
  • 邮件可以标记为已读、未读和垃圾
  • 消息按线程分组:如果Bob向Alice发送消息,Alice回复,然后Bob再次回复,Bob在其收件箱中只看到此对话的一个条目。(很像Gmail)
你知道有什么宝石可以帮我吗


其中最流行的是Mailboxer()。但是我不太喜欢这个模型(通知而不是消息,对话而不是线程,收据表…)。所以我对其他选择很感兴趣。

我想建议如下联系

​​class User < ActiveRecord::Base
       has_many :messages_received, :class_name => 'Message', :foreign_key=> 'to_user_id'
       has_many :messages_sent, :class_name => 'Message', :foreign_key=> 'from_user_id'
end

class Message < ActiveRecord::Base
    belongs_to :from_user, :class_name => 'User' # from_user_id field fk Users
    belongs_to :to_user, :class_name => 'User' # to_user_id field fk Users
    belongs_to :thread, :class_name => 'Message' # Reference to parent message
    has_many :replies, :class_name => 'Message', :foreign_key => 'thread_id'
end​​
​此外,还可以更轻松地检查用户发送的@user.messages\u sent消息

并以@user.messages\u received的形式接收

a) 您可以使用自动完成电子邮件

b) 您可以使用布尔字段read、unread和trashed

这有帮助吗?
first_msg = Message.new(:to_user => ​userA, :from_user => ​userB, :body => 'Hello!')

​userA​_reply = first_msg.replies.build(:to_user => ​userA, :from_user => ​user​B​, :body => 'hi back')

​userB​_reply = first_msg.replies.build(:to_user => ​user​B​, :from_user => ​userA, :body => 'later')