【问题标题】:How to set up relations between these two rails models如何在这两个 Rails 模型之间建立关系
【发布时间】:2012-05-08 03:48:38
【问题描述】:

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

这是我的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

对吗?

【问题讨论】:

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


    【解决方案1】:

    你必须重命名你的关联来区分它们:

    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
    

    【讨论】:

      猜你喜欢
      • 2020-01-01
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多