2014-11-08 42 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