我有一个rails 3应用程序。我想添加一个具有以下功能的内部消息系统:
你知道有什么宝石可以帮我这么做吗?
最受欢迎的一种是Mailboxer(https://github.com/ging/mailboxer)。但我不太喜欢这个模型(通知而不是消息,对话而不是线程,收据表...)。所以我对替代品感兴趣。
答案 0 :(得分:3)
我想建议如下关联
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
您可以按照以下步骤创建消息
first_msg = Message.new(:to_user => userA, :from_user => userB, :body => 'Hello!')
userA_reply = first_msg.replies.build(:to_user => userA, :from_user => userB, :body => 'hi back')
userB_reply = first_msg.replies.build(:to_user => userB, :from_user => userA, :body => 'later')
并且更容易检查用户发送的消息为@ user.messages_sent
并收到@ user.messages_received
a)您可以使用https://jqueryui.com/autocomplete/自动填写电子邮件
b)您可以使用读取,未读和已删除的布尔字段