我有模型用户和消息。每个用户都可以向其他用户发送消息。在用户中没有与消息相关的字段。在Message中有以下内容:from_id,to_id,content。
我试图自己动手,但几分钟后感到困惑。
我应该在每个模型中使用has_many has_one,belongs_to的组合?应该有以下方法:
msg.from => author of the message
msg.to => receiver
usr.sent_messages => array of sent messages
usr.received_messages => array of received messages
此外,我希望在发送者或接收者被销毁时销毁该消息。所以:依赖=>:某处需要销毁
这是我的尝试,当然不起作用:
用户:
has_many :sent_messages, :source => :message, :dependent => :destroy
has_many :received_messages, :source => :message, :dependent => :destroy
消息:
has_one :from, :source=>:user
has_one :to, :source=>:user
提前致谢,
再见
答案 0 :(得分:3)
你可以这样做:
## User
has_many :received_messages, :foreign_key => :to_id, :class_name => 'Message', :dependent => :destroy
has_many :sent_messages, :foreign_key => :from_id, :class_name => 'Message', :dependent => :destroy
## Message
belongs_to :from, :class_name => 'User', :foreign_key => :from_id
belongs_to :to, :class_name => 'User', :foreign_key => :to_id
请记住,在执行关联时,当您执行 belongs_to 时,这意味着属于的对象是弱实体,因此当您说 has_one时,它必须包含外键或 has_many ,具有强实体的对象,因此它不包含外键。
通过存在的想法来思考,如果一个对象可以存在而没有它的关联,那么它就是一个强大的实体,如果它没有它就不存在,它就是一个弱一。