【发布时间】:2011-02-24 09:41:13
【问题描述】:
嘿,
我正在尝试实现社交网络中使用的消息系统。我面临的问题首先是关于数据库结构,其次是如何在 Rails 中实现它。
我的第一个想法是我使用 3 个表:
消息:id|subject|text|created_at
接收者:id|message_id|read:boolean
创建者:id|message_id|read:boolean
现在我想知道如何实现以下功能:
1.) 用户可以删除他的消息。但是由于双方都想阅读该消息,因此如何确保仅在两个用户都删除该消息时才删除该消息。
2.) 我如何实施回复?或者实际上我如何找到相应的创建者?
3.) 如何判断邮件是否被收件人阅读?
另一个想法是: creator_messages: id|creator_id|receiver_id|subject|text|read|created_at receiver_messages:与 creator_messages 相同
这区分了用户,因此他们可以单独删除他们的消息。但是我如何知道邮件是否被阅读?
我的第三种方法基本上是我的第二种方法,但只有一个表格消息,然后将其显示给用户。
1. 用户一删除该消息,该消息即被删除。
2. 实际上我如何将关系表示为 has_many 和属于?
我认为它会像这样工作:
model User
:has_many :send_messages, :class_name=>"messages", :foreign_key=>"creator_id"
:has_many :received_messages, :class_name=>"messages", :foreign_key=>"receiver_id"
end
model Messages
belongs_to :user
end
但不知何故我没有让它工作。我想我在这里遗漏了一些基本的东西。
希望有人可以帮助我 =) 非常感谢
【问题讨论】:
-
应该是
:sent_messages,如果另一个是:received_messages:) -
我没有尝试设置私人消息系统,但如果我必须这样做,我会挖掘 insoshi 代码(github.com/insoshi/insoshi)或检查这个插件:github.com/professionalnerd/simple-private-messages(工作使用 Restful 身份验证)。希望它可以帮助...
-
嘿,为什么你想要消息的多个创建者,而不仅仅是消息模型中的 creator_id?
-
我会挖掘代码谢谢。
标签: ruby-on-rails messagebox database-schema has-many