我正在开展一项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.find_or_create_by_email(migratee.email)之后执行user.id = migratee.user_id时,不会迁移旧ID,但会分配新的自动递增ID。有谁知道如何避免这种情况?
此致
拉特格
答案 0 :(得分:1)
我不知道您的查询是怎样的。如果您正在执行INSERT SELECT,则可以添加HAVING来过滤现有的电子邮件地址。否则你可以做GROUP BY电子邮件,只收一封电子邮件。
答案 1 :(得分:0)
如果它一次性关闭我可能只关闭你的新mysql表id列中的auto_increment,直到你完成迁移然后重新打开或/在新数据库表中创建另一个名为udid的列(然后重命名并删除id col)。可能有更好的方法,但它快速而简单。