我已经看到如何在 Rails 迁移中将可为空的列更改为不可为空?用于将不可为空的列添加到具有现有记录的现有数据库表的问题。因此,我正在考虑这样做以使用acts_as_list为模型添加位置可排序性:
class AddPositionToArticles < ActiveRecord::Migration[6.1]
def change
add_column :articles, :position, :integer
Article.where(position: nil).each do |article|
article.position = 0
article.save!
end
change_column :articles, :position, :integer, null: false
end
end
但是,这是不正确的,因为position
需要根据相对于user
记录的定位来递增,所以user.articles
是根据预定义的位置进行排序的。
我如何在迁移中做到这一点?我acts_as_list
在文章中添加时会自动发生吗?如此简单,我需要做的就是在迁移中重新保存记录(而不是设置位置)?
我如何确保它们按照开始时的顺序排列?