Ruby on rails 会话迁移Ruby on Rails 课堂对话

Ruby on rails 会话迁移Ruby on Rails 课堂对话,ruby-on-rails,ruby,postgresql,migration,Ruby On Rails,Ruby,Postgresql,Migration,我上面有这个模型,但我不确定如何处理这个表的迁移。基本上,每个“对话”可以有多个用户,比如一个群组聊天,然后它也有许多消息。知道我应该如何创建迁移吗 class Conversation < ApplicationRecord has_many :messages, dependent: :destroy has_and_belongs_to_many :users end class CreateConversations

我上面有这个模型,但我不确定如何处理这个表的迁移。基本上,每个“对话”可以有多个用户,比如一个群组聊天,然后它也有许多消息。知道我应该如何创建迁移吗

class Conversation < ApplicationRecord
    has_many :messages, dependent: :destroy
    has_and_belongs_to_many :users
end
class CreateConversations
我的邮件迁移如下所示:

class CreateConversations < ActiveRecord::Migration[5.2]
  def change
    create_table :conversations do |t|

      t.timestamps
    end
  end
end
class CreateMessages

这看起来对吗?

您的
对话
消息
表看起来不错,但是您的
发件人
(用户?)模型应该与
对话
归属
关系。在
发送者
迁移中添加此项:

t.参考资料:对话

编辑:我的错误,上面的解决方案假设一个一对一的
发送者
对话
关系,但多对多关系似乎更合适(一个
对话
可以有多个
发送者
s,而一个
发送者
可以有多个
对话
s)

在这种情况下,您需要一个映射多对多关系的
senders\u conversations


rails g migration CreateJoinTableAuthorsBooks authors books
从上面的链接就是您所需要的(用发送者和对话替换作者和书籍)。

我的用户(发送者)模型有这样一个:has_和_belien_to_many:conversations,dependent::destroy这行吗?这真是一团糟hahaI在我运行时出于某种原因得到了这个查询:User.first.conversations.to_sql在“conversations\”中选择“conversations\*”在“conversations\”中内部连接“conversations\”在“conversations\”id\”中选择“conversations\”=1“conversations\”在哪里即使来自???@ryanglenrails的表也知道
有很多
关系需要这样的表。检查您的
db/schema.rb
文件,您应该能够在其中找到
conversations\u users
表。检查文档,它告诉您迁移应该如何查找HABTM关系
class CreateMessages < ActiveRecord::Migration[5.2]
  def change
    create_table :messages do |t|
      t.references :sender
      t.references :conversation
      t.text :content

      t.timestamps
    end
  end
end