3

我目前正在使用 has_and_belongs_to_many 来实现多对多关系。但是,我想在 many_to_many 表中放入一个属性。

基本上我正在创建一个电子邮件系统。我有用户和对话。一个用户可以有很多对话,一个对话也可以有很多用户。但是,我正在尝试使其具有已读/未读属性来显示已读取的消息。由于会话可以有许多用户,因此将属性放在会话表中是不切实际的,因为这意味着会话被所有人阅读。所以我认为它在中间的桌子上效果最好。我想知道如何在中间表中访问该属性。如果属性被读取。我输入什么代码来访问它以及如何更新属性。如上所述,我正在使用 has_and_belongs_to_many

4

1 回答 1

6

如果您想为您的has-and-belongs-to-many 关联添加其他属性,则必须为该关系构建一个模型类。请参阅Rails 指南中关于它的详细描述。

在为自己阅读之后,当前版本的 Rails 已弃用它,所以你真的应该切换到has_many :through. 您的模型可能是(从 Rails 指南复制和更改,我不知道这是否connection是 m2n 关系的好名字):

class User < ActiveRecord::Base
  has_many :connections
  has_many :conversations, :through => :connections
end

class Connection < ActiveRecord::Base
  belongs_to :user
  belongs_to :conversation
end

class Conversation < ActiveRecord::Base
  has_many :connections
  has_many :users, :through => :connections
end

在那里,您可以向connections表中添加其他属性,并在代码中引用它们。

于 2012-04-22T12:59:57.327 回答