ruby-on-rails - 向 Rails 3 中的多对多表添加另一个属性

标签 ruby-on-rails many-to-many has-and-belongs-to-many

我目前正在使用 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/

相关文章:

ruby-on-rails - 成功使用 Azure 机器学习 API?

ruby-on-rails - MongoID、Heroku、MongoLab/HQ,无插件

entity-framework - Entity Framework 代码首先为现有表进行多对多设置

mysql - 具有条件和限制的 Symfony/Doctrine ManyToMany

mysql - Rails - 带有 include、where 和 AND 的 Controller 查询

ruby-on-rails - 如何为Hartl的Rails教程授予AWS用户权限

ruby-on-rails - rails 3 使用文件夹名称作为 namspace 引发未初始化的常量错误

c++ - 在 C++ 中的多对多关系和实现中查找两个不相关对象的最快方法

ruby-on-rails - Rails:是否可以为has_and_belongs_to_many关联添加额外的属性?

mysql - CakePHP HABTM 协会不工作