0

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

信息

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

我面临的第一个问题当然是 sender_id 是唯一的,但是 recipent_id 是什么,经常有消息应该发给几个人!

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

用户has_many :messages

消息belongs_to :user

为此,我需要在消息模型中使用一个名为 user_id 的库,但现在我有两个字段 sender_id 和 reciepent_id!

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

4

1 回答 1

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)
于 2013-10-23T15:29:08.953 回答