将连续编号添加到1 Rails+PostgreSQL中的字段状态

w8rqjzmb  于 2022-09-21  发布在  PostgreSQL
关注(0)|答案(1)|浏览(129)

current behavior

我希望topic_order字段从1开始,当前它从第一个到最后一个排序,但从任何位置开始。我希望迁移批量更新所有主题,以便从1到n开始。我可以:

def change
 i=1
 Topic.all.each do |topic|
  topic.update(topic_order: i)
  i += 1
 end
end

但是效率不高,我有几百个主题,有没有办法让它更好更快呢?提前谢谢你

mgdq6dx1

mgdq6dx11#

您可以更改迁移中的默认设置:

def change
  execute "SELECT setval('products_id_seq', 1)"
  change_column :topics, :topic_order, :integer, default: -> { "nextval('topic_id_seq')" }
end

希望这能对你有所帮助。

相关问题