2014-09-26 99 views
0

我试图向我的db(key)添加一个既是唯一也不为空的列。在我的迁移中,我有填充列的代码。问题在于迁移失败,因为它在添加数据之前添加了这个唯一/非空值约束,然后抱怨存在一个现有密钥。在迁移中的唯一索引列上添加空约束

这是什么东西,我需要两个迁移 - 一个添加列/数据,然后稍后添加约束?或者这可以一次完成吗?

回答

0

理想情况下,在这种情况下,建议创建一个名为Stage Table(STG_YOUr table_name)的新表格,该表格非常类似于约束较少的原始表格。在此完成所有数据转换/操作,然后准备好MERGE或插入原始生产表。

0

我不会建议在迁移中填充数据。我发现最好让迁移只关注对数据库结构的物理更改。你应该创建rake任务来操纵你的数据。真的,你应该在你的模型中放置数据操作方法(并且对它们进行单元测试),然后让你的rake任务委托给这些方法。然后,您可以在运行所有迁移之后运行您的耙子任务,或者混合单个迁移和耙子任务。