ruby-on-rails - 如何建立这两个 rails 模型之间的关系

标签 ruby-on-rails ruby associations models database-relations

我有2个模型:UserPrivateMessage,它们必须关联(因为用户有许多私有(private)消息作为接收者和发送者,私有(private)消息属于用户)

这是我的private_messages表结构:

private_messages:
  sender_id:integer
  reciever_id:integer
  title:string
  message:text

我很难理解如何为发送者用户和接收者用户连接相同的消息,现在我的模型代码如下所示:

class User < ActiveRecord:Base
  has_many :private_messages
end

class PrivateMessage < ActiveRecord::Base
  belongs_to :user, :through => :sender_id
  belongs_to :user, :through => :reciever_id
end

正确吗?

最佳答案

您必须重命名您的关联以区分它们:

class PrivateMessage < ActiveRecord::Base
  belongs_to :sender, :class_name => 'User', :foreign_key => 'sender_id'
  belongs_to :receiver, :class_name => 'User', :foreign_key => 'receiver_id'
end

class User < ActiveRecord::Base
  has_many :sent_messages, :class_name => 'PrivateMessage', :foreign_key => 'sender_id', :dependent => :destroy
  has_many :received_messages, :class_name => 'PrivateMessage', :foreign_key => 'receiver_id', :dependent => :destroy
end

关于ruby-on-rails - 如何建立这两个 rails 模型之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10349904/

相关文章:

ruby-on-rails - 选择不同的 rails 4.2.5 不能正常工作

ruby-on-rails - Docker Compose:将环境变量暴露给链接服务

ruby-on-rails - yield 和违约情况 ||不输出默认情况

ruby-on-rails - 如何在 Rails 5 中按特定顺序加载装置

ruby-on-rails - 在 Heroku 上的 Rails 中为 Authorize.net AIM API 使用自定义证书

ruby-on-rails - rails 3 - 命名空间 - 查看器助手生成错误的路由

ruby-on-rails - Http JSON POST 请求返回带有 ruby​​ 的空体响应

ruby - 使用 Ruby Mechanize 提交 'aspnetForm' 未按预期工作

ruby-on-rails - 使用 Ruby on Rails 3 的命名空间中的关联错误

doctrine-orm - 使用 Doctrine querybuilder 过滤关联 ID