首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >:通过关联是在Ruby on Rails中链接联合表的正确方法

:通过关联是在Ruby on Rails中链接联合表的正确方法
EN

Stack Overflow用户
提问于 2019-05-24 07:21:26
回答 1查看 47关注 0票数 0

我有3个表,名为

用户表,

消息表和

Message_users表

Users表用于存储用户信息,Messages表用于存储用户发送的消息,Message_users表用于存储message_id和sender_id(发送消息的用户)和receiver_id(接收消息的用户)

在Message的模型类中,我有以下内容

class Message < ApplicationRecord has_many :user, :through :message_user dependent: :destroy end

在用户模型中,我有这个

class User < ApplicationRecord has_many :messages, :through :message_user, dependent: :destroy end

我不知道这是否是在消息模型和用户模型之间创建链接的正确方法

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-24 08:12:57

我不确定我是否理解了你的模型,它看起来像是两个用户之间的对话,它有很多消息,但你的“消息”模型有很多"message_users“或类似的东西。我觉得它的名字让人迷惑。

就我个人而言,我会有这样的模型:

代码语言:javascript
复制
Conversation
  has_many :messages
  has_and_belongs_to_many :users

Message
  belongs_to :conversation
  belongs_to :sender, class_name: 'User'

User
  has_and_belongs_to_many :conversations
  has_many :messages, as: :sender

您实际上不需要保存receiver_id (会话中的任何用户都不是消息的发送者)。此外,您还可以使用相同的配置在同一对话中拥有两个以上的用户。

阅读关于HasAndBelongsToMany的文章(它需要您创建一个连接表"conversations_users“,但您不需要为它创建模型) https://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association

我知道它不尊重您的原始表,但它们看起来很混乱,至少对我来说是这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56284041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档