内容简介:翻译自:https://stackoverflow.com/questions/5130663/preferred-way-to-private-messages-modeling-in-rails-3
我计划在成员之间实现私人消息系统.我想知道什么是首选方法.
要求是
>我应该能够像这样轻松地检索它们
@user.conversations #Should return User objects that I sent or received messages from (but not me) @user.conversations.messages #Messages from all or specific user objects. @user.conversations.messages.unread #Unread messages
>当调用@ user.conversations时,应仅检索向我发送消息的人或发送消息的人.应排除current_user.
>如果我是sender_id = 5并发送to_id = 10那么,另一个人将回复发件人= 10 to_id = 5.这应该被视为并理解为相同的会话对象.
关于最后一点.我不确定什么是建模的首选方法.
最好使用一个Conversation模型来处理所有消息,例如
attr_accessible :user_id, :friend_id, :message, :read belongs_to :user
或者,最好创建一个Conversation模型来处理关联和消息的Message模型.
我想看看如何实现这种关系的示例,以及是否有其他方法可以实现.
我在这里有点迷失.
一个更简单的模型是捕获每个消息:
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' named_scope :in_reply_to, lambda { |message| :conditions => {:thread => message}, :order => 'created_at' } end 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
如果您需要捕获消息线程,那么任何回复消息都可以存储对开始对话(又称为线程)的初始消息的引用.例如:
first_msg = Message.new(:to_user => bob, :from_user => sally, :body => 'Hello!') sally_reply = first_msg.replies.build(:to_user => bob, :from_user => sally, :body => 'hi back') bob_reply = first_msg.replies.build(:to_user => sally, :from_user => bob, :body => 'later')
翻译自:https://stackoverflow.com/questions/5130663/preferred-way-to-private-messages-modeling-in-rails-3
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 卡通ufo模型建模,C4D建模教程
- 数据建模NoSQL数据库的概念和对象建模符号
- 小商店建模教程,C4D零基础建模教程
- 面向NLP场景应用的智能辅助建模(二)--本体树建模
- 面向NLP场景应用的智能辅助建模(三)要素树和概念树建模
- Erlang私有函数的私有程度如何?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
无线:网络文化中激进的经验主义
[英] 阿德里安·麦肯齐 / 张帆 / 上海译文出版社 / 2018-9
本书研究了无线是如何成为当代人类经验的主角的。从路由器、智能电话、电子书、城市到在线工作、服务协议、玩具以及国家等各个方面,人们已经感觉到了无线技术所引发的变革。本书作者援引一个世纪之前的哲学技术来分析当代最前沿的后网络时代的人类状况。基于威廉•詹姆斯的实用主义哲学相关的彻底经验主义,作者提出了把失序的无线网络世界与人们的感知匹配起来的新方式。一起来看看 《无线:网络文化中激进的经验主义》 这本书的介绍吧!