2017-11-07 8 views
1

시나리오는 두 개의 모델이 Room이고 다른 하나는 Tickets이며 관계는 has_many : tickets 티켓입니다.레일은 has_many 연관은 부모 개체를 삭제하지만 자식은 삭제하지 않습니다.

방을 삭제할 때 티켓을 삭제하면 안됩니다. 티켓 테이블에 room_id라는 외래 키가 있기 때문에이를 수행하는 방법은 무엇입니까?

내가 이것을 할 수 있다면 어떻게 그 특정 티켓에 대한 객실 정보를 얻을 수 있을까요?

답변

1

을이

class Room < ActiveRecord::Base 
has_many :tickets,dependent: :nullify 
end 
을 수행 할 수 있습니다

체크 아웃 this

4

이것은 레일스의 일반적인 동작입니다. 귀하의 협회에서 dependent: :destroy을 사용하고 계신 것 같습니다.

당신이 원하는 것은 dependent: :nullify입니다. 이것은 관련 티켓을 삭제하지 않고 방 개체를 삭제 만 티켓을 삭제 후 방 정보에 액세스 할 두 번째 질문으로 당

class Room < ActiveRecord::Base 
    has_many :tickets, dependent: :nullify 
end 

에 null로 room_id을 업데이트, 내가 대신 soft_delete 사용하도록 제안 실제 삭제. 여기서 당신이하는 일은 방을 삭제할 때, 방을 완전히 지우지 않고 부드럽게 삭제한다는 것입니다. 따라서 티켓 기록은 계속 유지되며 객실 세부 정보를 사용할 수 있습니다.

동일한 보석을 사용할 수 있습니다. 그러한 보석 중 하나는 Paranoia입니다. 이 보석에 대한 다양한 자습서를 살펴볼 수 있습니다.

희망이 있으면 도움이됩니다. 다른 안내가 필요하면 알려주세요.

+0

@ak ... sha, 설명해 주셨습니다. – Gabbar

+0

당신의 질문을 해결했다면 대답을 수락 하시겠습니까? – Aakanksha

+0

@ak ... sha, 받아 들여야한다. 글쎄, 나는 대답하지 않았다. 그러나 당신의 대답은 내 의구심 중 일부를 제거했다. :) – Gabbar