我目前正在使用 has_and_belongs_to_many 来实现多对多关系。但是,我想在 many_to_many 表中放入一个属性。
基本上我正在创建一个电子邮件系统。我有用户和对话。一个用户可以有多个 session ,一个 session 也可以有多个用户。但是,我正在努力做到这一点,以便我可以有一个已读/未读属性来显示哪些消息已读。由于对话可以有很多用户,因此将属性放在对话表中是不切实际的,因为这意味着对话被所有人阅读。所以我认为它在中间 table 上效果最好。我想知道如何访问中间表中的该属性。如果属性被读取。我要输入什么代码来访问它以及如何更新属性。如上所述,我正在使用 has_and_belongs_to_many
最佳答案
如果你想为你的 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
表中添加额外的属性,并在代码中引用它们。
关于ruby-on-rails - 向 Rails 3 中的多对多表添加另一个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10267786/