我正在尝试在rails中创建一个消息传递系统,使用户能够将消息发送到列表。一旦他们点击发送消息,就会在用户和列表之间创建新的对话。因此,对话始终只有2个用户。
这是基本设置
User
has_many Listings
Listing
belongs_to User
如上所述添加私人消息系统我的计划如下
Conversation
has_many Messages
Message
belongs_to Conversation
listing
has_many conversation
user
has_many conversation
conversation
belongs_to listing
conversation
belongs_to user
我从未做过这么疯狂的事情。我有一种感觉,有另一种更好的方法来做到这一点或过度使用它。我知道如果它在两个用户之间我很容易创建消息,但是作为一个用户可以有很多列表,我希望每个列表都有不同的对话(所以基本上是在用户和列表之间进行对话),即使是来自同一个所有者。有人可以说明在这种情况下采用哪种方法进行架构设计?
答案 0 :(得分:1)
我建议使用has_many来进行对话:
用户has_many列表
列出belongs_to用户
Conversation belongs_to Listing
Conversation has_many消息
消息belongs_to会话
列出has_many对话
UserA has_many对话,通过:listing,class:User
UserB has_many对话,通过:listing,class:User
当然,想到UserA和UserB的更好名称会很好,但发件人/收件人确实不起作用。
答案 1 :(得分:1)
它看起来很好,它有效吗?
一个问题:用户之间是否会存在对话?如果是这样,您可能需要对对象进行预测性命名,例如: ListingUserConversation
。