消息和许多用户的模型关联

时间:2013-10-23 15:05:04

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我是Rails的新手,实际上我正在尝试编写自己的消息传递应用程序。到目前为止,我有很多用户使用用户名,密码等。现在我想知道我应该如何最好地编写消息模型的迁移。我认为需要一条消息:

邮件

 sender_id => integer
 recipent_id => integer
 created_at => time
 updated_at => time

第一个问题我面临的当然是sender_id是唯一的,但是对于recipent_id来说,通常会有消息传给几个人!

下一个问题我不知道如何将用户模型引用到消息模型我的意思是我会写的正常:

用户 has_many:讯息

消息 belongs_to:user

要做到这一点,我需要在消息模型中使用名为user_id的coulmn,但现在我有两个cloumns sender_id和reciepent_id!

我希望你能给我一些提示!感谢

1 个答案:

答案 0 :(得分:2)

这是你在找什么?

class User < ActiveRecord::Base
  has_many :messages, :foreign_key => "sender_id" #this only gives the messages sent by the user.
end

class Message < ActiveRecord::Base
  #sender_id
  belongs_to :sender, :class => "User", :foreign_key => "sender_id"
  has_many :recipients, :class => "MessageRecipient"
end

class MessageRecipient < ActiveRecord::Base
  belongs_to :message
  belongs_to :recipient, :class => "User", :foreign_key => "recipient_id"
end

如果您想获取邮件的所有收件人,您可以

message.recipients.collect(&:email)