1

에 대해 다른 이름을 사용와 has_many : 나는 연결 개체를 가지고 관련을 삭제하는 경우has_one/종속 그래서 나는이 (의역) 다음이있는 사람의 코드를 찾고 있어요 파괴하지만 키

class user 
    has_one :connection, :dependent => :destroy 
    has_one :second_user, :through => :connection, :class_name => 'User' 
end 

class connection 
    belongs_to :user 
    belongs_to :second_user, :class => 'User' 
end 

'사용자'는 파손될 수 있습니다. 하지만 'second_user'필드를 점유하는 사용자가 파괴되면 연결이 끊어 지도록하고 싶습니다. 너무 많은 것을 망쳐 놓지 않고 어떻게 완벽하게 달성 할 수 있습니까? (마이그레이션이 필요 없기를 바랍니다.)

감사합니다.

답변

2

단일 사용자는 두 개의 연결과 연관 될 수 있습니다. 즉, 사용자 (두 번째 사용자)와 아직 정의되지 않은 Connection 간에는 다른 연결이 있음을 의미합니다. 나는 그것을 secondary_connection라고 부를 것이다.

class User 
    has_one :connection, :dependent => :destroy 
    has_one :secondary_connection, :class_name => 'Connection', :foreign_key => :second_user_id, :dependent => :destroy # Inverse of Connection second_user 
    has_one :second_user, :through => :connection, :class_name => 'User' 
end 
+1

+1 나는 아마도 ': secondary_connection'이라는 연관을 부르고 있지만 – PinnyM

+0

아, 알겠습니다. 고마워요! – wjandali

+0

PinnyM의 제안 덕분에 더 좋은 협회 이름을 사용했습니다. 내 이름 지정 선택 작업을하겠습니다. –