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