2012-04-22 45 views
2

我目前使用has_and_belongs_to_many来实现多对多关系。然而,我想要在many_to_many表中放入一个属性。将另一个属性添加到rails中的多对多表中3

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

+1

使用['has_many:through'](http://guides.rubyonrails.org/association_basics.html#choosing-between-has_many-through-and-has_and_belongs_to_many) – pjumble 2012-04-22 12:10:50

回答

5

如果您想为has-and-belongs-to-many association拥有其他属性,则必须为该关系构建模型类。请参阅Rails Guides about it中的详细说明。

在阅读完本人之后,现在已经不赞成使用当前版本的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表,并在代码中提及他们。

+0

我有类似的问题,多对多的表单和其他属性。我似乎无法构建参数来在create.http://stackoverflow.com/questions/11199572/rails-3-2-has-many-through-form-submission#comment14710178_11199572上插入额外的属性 – ctilley79 2012-06-27 03:26:20

相关问题