我有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
我不知道这是否是在消息模型和用户模型之间创建链接的正确方法
发布于 2019-05-24 08:12:57
我不确定我是否理解了你的模型,它看起来像是两个用户之间的对话,它有很多消息,但你的“消息”模型有很多"message_users“或类似的东西。我觉得它的名字让人迷惑。
就我个人而言,我会有这样的模型:
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
我知道它不尊重您的原始表,但它们看起来很混乱,至少对我来说是这样。
https://stackoverflow.com/questions/56284041
复制相似问题