Ruby on rails 如何将自动生成的ID添加到现有表中?

Ruby on rails 如何将自动生成的ID添加到现有表中?,ruby-on-rails,Ruby On Rails,我的模式中有一个表没有自动生成的ID主键,因为我在创建它时禁用了该选项。是否有方法将自动递增的新列ID放入我的表中?是的,使用主键生成迁移: rails g迁移将\u id\u添加到\u我的\u表id:primary\u键 这将产生以下变化: def更换 添加列:我的表格,:id,:主键 终止 如果您不想添加新的迁移,或者如果没有太多最有用的数据,那么rails还提供向下迁移的功能 rake db:migrate:down VERSION=20190204205537 “20190204205

我的模式中有一个表没有自动生成的ID主键,因为我在创建它时禁用了该选项。是否有方法将自动递增的新列ID放入我的表中?

是的,使用主键生成迁移:

rails g迁移将\u id\u添加到\u我的\u表id:primary\u键 这将产生以下变化:

def更换 添加列:我的表格,:id,:主键 终止
如果您不想添加新的迁移,或者如果没有太多最有用的数据,那么rails还提供向下迁移的功能

rake db:migrate:down VERSION=20190204205537
“20190204205537”这应该是您的迁移版本

它将“关闭”您的迁移,而您无法编辑它,我的意思是删除主键false。然后就跑

rake db:migrate
我希望这能对你有所帮助。
谢谢。

在最简单的情况下,您可以进行哈希运算。为什么需要它自动递增?i、 增量有意义吗?可能有帮助。删除当前主键列后,此新ID列将成为主键。我知道我可以编辑我的迁移,但我想知道是否有一种方法可以用一个新的迁移文件来完成。增量意味着你的序列与时间有关系,但你需要它吗?如果您只需要标识一个表,那么无时间哈希是有效的,甚至在执行某些检查时更有效,因为您可以对属性进行哈希,使其包含更多信息。我还想知道为什么要删除生成的ID?这是有原因的。我认为这不一定与时间有关,但由于我的系统中的用户可以向表中添加新资源,因此ID列似乎是唯一标识行的简单方法,即使其中某些行的信息相同。这会使列自动递增吗?是的,Rails的主键默认是自动递增的。是的,如果其他人没有在他们的系统上运行当前迁移,我会尝试编辑它们