与额外的列轨相关的多对多关系

时间:2014-03-26 12:51:40

标签: ruby-on-rails ruby activerecord

我有两个玩家参与一项活动并且他们在那段时间交换消息,因为很多玩家与其他玩家一起玩很多活动,我开始研究消息存档功能,我有一些问题设计,因为我想按活动存档。

在我的消息模型中,每条消息都有一个activity_id字段。

我的用户模型:

has_many :sent_messages, :foreign_key => 'sender_id', :class_name => Message
has_many :received_messages, :foreign_key => 'receiver_id', :class_name => Message

我的archived_message:

  belongs_to :user, :class_name => User
  belongs_to :message, :class_name => Message
  attr_accessible :activity_id

我刚刚添加了尝试将其添加到我的模型中:

has_many :activity_archived_messages, :through => :archived_messages, :source => :message

现在这是我一直在苦苦挣扎的部分,因为如果它们属于同一个活动,我想存档收到和发送的消息。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以在模型中添加Activity,然后将其存档:

class Activity < ActiveRecord::Base
  has_and_belongs_to_many :messages
  has_and_belongs_to_many :participants, class_name: User
end

现在,您可以存档,并将所有相关消息双向保存在您的存档中。