2011-12-30 6 views
2

다른 모델에서 모델 관계가 사용 중인지 확인하여 모델 관계가 파괴되지 않도록하여 고아를 만드는 가장 좋은 방법은 무엇입니까?레일 종속 종속 파괴

예 : 나는 Ticket 및 TicketStatus 모델을 가지고 있습니다. TicketStatus는 Ticket에 속합니다. Ticket has_many TicketStatuses.

TicketStatus가 이미 티켓에 할당되어있는 경우이를 삭제할 수 없습니다. 오류 메시지도 보내고 싶습니다.

답변

3

가장 쉬운 방법 콜백 :

class TicketStatus < ActiveRecord::Base 
    belongs_to :ticket 
    before_destroy :check_ticket 

    private 

    def check_ticket 
    if ticket != nil 
     errors.add_to_base("cannot delete ticket status that has a ticket") 
     return false 
    end 
    end 
end 

이 그것을 방지하고 당신에게 오류를 제공합니다.

희망이 도움이됩니다.

+0

이 답변을 수락 했습니까? 아니면 더 좋은 방법이 있습니까? –

+0

이것은 좋은 해결책입니다. OP는 여전히 그것을 받아 들일 필요가 있습니다! – andrewpthorp