2

私は 2 つのモデルを持っています:User関連付けるPrivateMessage必要があります (ユーザーは受信者と送信者として多くのプライベート メッセージを持っているため、プライベート メッセージはユーザーに属します)

それは私の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

あれは正しいですか?

4

1 に答える 1

6

関連付けを区別するために、関連付けの名前を変更する必要があります。

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
于 2012-04-27T11:42:44.587 に答える