시나리오는 두 개의 모델이 Room이고 다른 하나는 Tickets이며 관계는 has_many : tickets 티켓입니다.레일은 has_many 연관은 부모 개체를 삭제하지만 자식은 삭제하지 않습니다.
방을 삭제할 때 티켓을 삭제하면 안됩니다. 티켓 테이블에 room_id라는 외래 키가 있기 때문에이를 수행하는 방법은 무엇입니까?
내가 이것을 할 수 있다면 어떻게 그 특정 티켓에 대한 객실 정보를 얻을 수 있을까요?
시나리오는 두 개의 모델이 Room이고 다른 하나는 Tickets이며 관계는 has_many : tickets 티켓입니다.레일은 has_many 연관은 부모 개체를 삭제하지만 자식은 삭제하지 않습니다.
방을 삭제할 때 티켓을 삭제하면 안됩니다. 티켓 테이블에 room_id라는 외래 키가 있기 때문에이를 수행하는 방법은 무엇입니까?
내가 이것을 할 수 있다면 어떻게 그 특정 티켓에 대한 객실 정보를 얻을 수 있을까요?
연결을 has_many에 dependent: :nullify
추가,이 삭제 부모 후에 널에 의해 foreign_key 변경됩니다 : 레일 문서에서
has_many :tickets, dependent: :nullify
봐 : http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many
을이
class Room < ActiveRecord::Base
has_many :tickets,dependent: :nullify
end
을 수행 할 수 있습니다
체크 아웃 this
이것은 레일스의 일반적인 동작입니다. 귀하의 협회에서 dependent: :destroy
을 사용하고 계신 것 같습니다.
당신이 원하는 것은 dependent: :nullify
입니다. 이것은 관련 티켓을 삭제하지 않고 방 개체를 삭제 만 티켓을 삭제 후 방 정보에 액세스 할 두 번째 질문으로 당
class Room < ActiveRecord::Base
has_many :tickets, dependent: :nullify
end
에 null로 room_id
을 업데이트, 내가 대신 soft_delete 사용하도록 제안 실제 삭제. 여기서 당신이하는 일은 방을 삭제할 때, 방을 완전히 지우지 않고 부드럽게 삭제한다는 것입니다. 따라서 티켓 기록은 계속 유지되며 객실 세부 정보를 사용할 수 있습니다.
동일한 보석을 사용할 수 있습니다. 그러한 보석 중 하나는 Paranoia입니다. 이 보석에 대한 다양한 자습서를 살펴볼 수 있습니다.
희망이 있으면 도움이됩니다. 다른 안내가 필요하면 알려주세요.
@ak ... sha, 설명해 주셨습니다. – Gabbar
당신의 질문을 해결했다면 대답을 수락 하시겠습니까? – Aakanksha
@ak ... sha, 받아 들여야한다. 글쎄, 나는 대답하지 않았다. 그러나 당신의 대답은 내 의구심 중 일부를 제거했다. :) – Gabbar