0

내 웹 응용 프로그램에 개인 메시징 시스템을 쓰고 있습니다. Facebook이나 Twitter와 같은 일반적인 소셜 네트워킹 웹 사이트에서 PM을 보내거나 Hotmail을 통해 전자 메일을 보내는 것과 같은 일을한다고 생각하십시오.개인 메시징 시스템 용 데이터 모델

I have come up with the following migration so far: 
class CreateMessages < ActiveRecord::Migration 
    def self.up 
    create_table :messages do |t| 
     t.integer :sender_id, :recipient_id 
     t.string :title 
     t.text :body 
     t.boolean :read 
     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :messages 
    end 
end 

그러나 sender_id와 recipient_id는 모두 동일한 필드 (역할 모델의 id 필드)를 참조합니다. 통역사가 그 분야를 언급하고 있음을 알기 위해 어떤 변화가 있어야합니까? 조인 테이블과 같은 다른 변경 사항이 있습니까? 당신이 할 수 있어야하므로,하지만,

belongs_to :sender, :class_name => 'Role', :foreign_key => 'sender_id' 
belongs_to :recipient, :class_name => 'Role', :foreign_key => 'recipient_id' 

내가 외국 키가 유추 생각 : 내가 제대로 질문을 읽고 있어요 경우

+1

코드를 형식이 지정된 코드 블록에 넣으십시오. 사람들이 귀하의 질문을 읽고 이해하기가 훨씬 쉬워집니다. (코드를 강조 표시하고 Ctrl-K를 입력하십시오.) –

답변

1

, 당신은 belongs_to의 class_name에 옵션을 사용하여 모델의 변화를 확인해야합니다 그것들을 내버려둬.

+0

belongs_to의 기본 외래 키는 association_name_id이므로 예제에서 sender_id와 recipient_id를 추측 할 수 있습니다. –

+0

외래 키가 대신 "role_id"가되어야합니까? sender_id라는 이름으로 지정하고 싶지만 sender_id가 실제로 role_id를 참조하는지 확인하려면 어떻게해야합니까? – alamodey

관련 문제