我有2个模型:User
和PrivateMessage
,它们必须关联(因为用户有许多私有(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/