2014-11-08 41 views
0

我有兩個表。 Table_1與table_2有一對多的關係。我的目標是使用rails遷移將table_2中的所有數據移動到table_1中新創建的文本列。 我將在使用sqlite的遷移中執行以下操作。Rails遷移以使用來自相關表的數據更新數據庫table_one

def up 
sql = "UPDATE table_1 SET column=(SELECT name || ' ' || email FROM  
table_2 WHERE table2.table_1_id=table_1.id)" 
update (sql) 
end 

這工作,但問題是,在TABLE_1每個記錄在TABLE_2 1條或多個相關的記錄,我怎麼在TABLE_2設置字段中TABLE_1到所有相關記錄

回答

1

我會寫自定義的種子文件並通過對數據的任務,如這些rake任務運行它,用FPGA實現,例如,在回答這裏建議:

Adding a custom seed file

由於這是一個RB文件,您可以使用標準模式/循環/活動記錄Rails代碼這應該使維護關聯等變得更簡單。

1

最好的選擇是在你的遷移中,除了創建新表的代碼之外,添加代碼來將舊錶中的數據「導入」到新的表中。之後,如果舊錶不相關,則可以刪除它們。

def up 
    add_column :table1, :newfield, :string 

    Table1.all.each do |record| 
     record.newfield = record.relation.fields 
     record.save! 
    end 

# Beware that if you need to rollback, it's better to implement a way 
# to revert the changes. 
end