0

우정의 생성시 데이터베이스에 두 개의 행을 만드는 우정 모델을 성공적으로 구현했습니다."친구"가 자신의 계정을 삭제할 때 db에서 우정을 삭제하는 방법은 무엇입니까?

# Accept a friend request. 
    def self.accept(customer, friend) 
    transaction do 
     accepted_at = Time.now 
     accept_one_side(customer, friend, accepted_at) 
     accept_one_side(friend, customer, accepted_at) 
    end 
    end 

    # Update the db with one side of an accepted friendship request. 
    def self.accept_one_side(customer, friend, accepted_at) 
    request = find_by_customer_id_and_friend_id(customer, friend) 
    request.status = 'accepted' 
    request.accepted_at = accepted_at 
    request.save! 
    end 

이제 사용자 A가 계정을 삭제하면 db의 전체 우정 (두 행)도 삭제되는지 확인하려면 어떻게해야합니까? 나는 dependent: destroy이 자신의 계정을 삭제 한 후 사용자 A와 관련된 데이터 만 삭제할 것이라고 믿습니다. 하지만 사용자 B에 속하는 DB의 다른 행을 삭제하려고합니다.

답변

1

우선 두 가지 레코드를 만드는 이유는 무엇입니까? 그것은 그렇게 효율적이지 않으며 중복됩니다. 한 레코드로 충분합니다. 여기에 좋은 가이드 확인 : 우정 모델의 두 아이디의이 belongs_to 두 기록에 두 번 사용자에게 연결되어 있기 때문에이 두 우정의 기록을 삭제해야합니다이 경우에도, 어쨌든 http://railscasts.com/episodes/163-self-referential-association

을, 나는 가정한다.

둘 다 삭제 될지 알아 보셨습니까?

그렇지 않은 경우 (해당되는 경우) 사용자 모델에서 before_destroy 콜백을 사용하여 다른 레코드를 삭제할 수 있습니다.