1

저는 레일을 처음 사용하고 간단한 레일 앱을 업데이트하려고합니다. 현재 카테고리 : 갤러리 : 갤러리 간 1 : 1 관계가 있습니다. 두 모델을 모두 HABTM 관계로 변경했으며 조인 테이블 마이그레이션을 작성했습니다.One to Many에서 HABTM 관계로 데이터 이전

이전에 범주 테이블에 저장된 gallery_ids를 조인 테이블로 이동할 수 있도록 마이그레이션을 설정하는 방법이 있습니까?

답변

2

위로 이동 중에 이와 같은 작업을 수행 할 수 있습니다.

Category.all.each do |cat| 
gallery = Gallery.find(cat.gallery_id) 
cat.galleries << gallery 
cat.save 
end 

다운 그레이드에서 연관을 삭제하고 gallery_id를 다시 추가하고자 할 수 있습니다.

+0

어쨌든 이것이 정확히 무엇을 설명 할 수 있습니까 (미안 해요, 저는 루비와 레일을 처음 사용했습니다) – juliaallyce

+0

물론, 각 카테고리를 반복합니다. 그런 다음 각 카테고리와 연결된 gallery_id에서 갤러리를 찾습니다 (이것은 일대 다 관계에 사용되었습니다). 그런 다음 갤러리 배열을 갤러리에 추가합니다. Rails는 배후에 habtm 연결에 필요한 SQL을 작성합니다. 어떤 경우에는 gallery_id가 nil이 아니라면 배열을 업데이트하지 않는 것이 좋습니다. – cih

+0

감사합니다. – juliaallyce