2014-03-13 3 views
0

모델 데이터를 저장하는 방법이 바뀌면 어떻게 새 열을 추가하고 기존 데이터를 이전 할 수 있습니까? 예레일스가 추가 열을 마이그레이션하고 다른 열의 데이터로 채우기

class AddPropertyAAndPropertyBToOwner < ActiveRecord::Migration 
    def change 
    add_column :owners, :property_a, :string 
    add_column :owners, :property_b, :string 

    # Now I need to migrate the existing 40 records 
    # populating the new columns from an existing one 
    # Owner.all.each do |o| 
    # original = o.original_property 
    # o.property_a = original.match(/foo/).captures.first 
    # o.proptery_b = original.match(/bar/).captures.first 
    # o.save 
    # end 
    end 
end 
+0

이걸 '위로'와 '아래로'방법으로 나눌 때 유용 할 수도 있습니다 (또는 필요합니다) – KappaNossi

+0

. 그리고 아래의 메소드에서'property_a'와'property_b'에있는 것을 덤프하면됩니까? – squarefrog

+0

글쎄,'down'은 단순히 열을 제거하고, 효과적으로'up' 메소드를 생성하고 채우기 만하면됩니다. 가치를 어딘가에 유지하는 것은 또 다른 이야기입니다. 변경 방법은 자동으로 실행 취소를 처리하는 것이므로 삽입 할 때 어떤 작업을해야할지 모르겠습니다. 단순히 실패 할 수도 있습니다. – KappaNossi

답변

2

,하지만 당신은 데이터를 업데이트하기 전에 내 말은 Owner.reset_column_information 처음

을 수행해야합니다

예를 들어, 다음은 적절할 것이다.

+0

좋습니다. 문서 링크를 가져 주셔서 감사합니다. 실제로 사용 가능한 방법에 대한 정보를 찾기가 어렵습니다. – squarefrog

+0

문제 없습니다. APIdock이 훌륭합니다 –

+0

@squarefrog 작동하는 경우 답변을 승인하십시오 – gotva

관련 문제