gpt4 book ai didi

ruby-on-rails - 我可以在 Rails 4 及更高版本中使用 change_column 方法回滚吗?

转载 作者:行者123 更新时间:2023-12-04 06:24:30 26 4
gpt4 key购买 nike

change_column在 Rails 4 及更高版本的迁移中使用时能够回滚的方法?

下面是一个例子:

def change
change_column etc
end

我应该使用 updown方法代替?

最佳答案

change_column默认情况下无法恢复。
Rails 无法知道迁移前的列定义,因此它无法回滚到这个原始定义。

因此,从 Rails 4 开始,您可以向 Rails 提供必要的信息。
这就是reversible方法用于:

def change
reversible do |dir|
dir.up do
change_column :users, :score, :decimal, precision: 6, scale: 2
end
dir.down do
change_column :users, :score, :decimal, precision: 4, scale: 2
end
end
end

乍一看,这似乎比使用 up 更复杂。和 down .优点是,您可以将其与可逆迁移混合使用。
例如,如果您将一堆字段添加到表中并且必须更改几个字段,则可以使用 change_tableadd_column连同 reversible进行干净紧凑的迁移:
def change
change_table :users do |t|
t.string :address
t.date :birthday
# ...
end

reversible do |dir|
dir.up do
change_column :users, :score, :decimal, precision: 6, scale: 2
end
dir.down do
change_column :users, :score, :decimal, precision: 4, scale: 2
end
end
end

关于ruby-on-rails - 我可以在 Rails 4 及更高版本中使用 change_column 方法回滚吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40180548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com