0

我正在做一个 RoR 项目。我正在迁移用户表。因为新的 dbase 有不同的设置,我想将登录内容与个人/设置内容分开,所以我没有导入 dbase;我分别迁移所有属性。我想保留旧的用户 ID。当我使用 user=User.new 时,我可以执行 user.id = migratee.user_id 并且保持相同的 user_id。不幸的是,在旧表中,不同的用户使用相同的电子邮件地址注册(不要问为什么)。当然,我不希望这样,所以我代替 user=User.new 所做的是 user=User.find_or_create_by_email(migratee.email)。我知道这会导致一些问题,因为具有相同电子邮件地址的用户将被覆盖。这是我将单独处理的问题。我的问题是,当我在 user=User 之后执行 user.id = migratee.user_id 时。find_or_create_by_email(migratee.email) 不会迁移旧 ID,但会分配新的自动递增 ID。有人知道如何避免这种情况吗?

问候,

罗格

4

2 回答 2

1

我不知道你的查询是什么样子的。如果您正在执行INSERT SELECT,您可以添加 HAVING 来过滤现有的电子邮件地址。否则,您可以通过电子邮件进行分组,但只会收到一封电子邮件。

于 2011-08-05T10:20:21.647 回答
0

如果它一次关闭,我可能会关闭新 mysql 表 id 列中的 auto_increment,直到您完成迁移,然后重新打开它或/在新数据库表中创建另一个名为 udid 的列(然后重命名并删除id col)。可能有更好的方法来做到这一点,但它又快又容易。

于 2011-08-07T02:48:32.637 回答