Rails 迁移以将空字符串更改为 null
Rails migration to change empty strings to null
假设我有一个名为 fruit 的数据库 table 是这样的:
id name
1 ““
2 “"
3 ““
4 ““
5 ""
6 melon
在这种情况下,我需要编写迁移以将空字符串更改为 null,而不影响 melon
。
会不会是这几行?
def change
update_column fruits, :name, null if :name => ""
end
我猜是很基本的东西,但我有点卡在这里了。
这里最好的方法是什么?
在控制台开发和生产中也是如此:
Fruit.all.each do |fruit|
if fruit.name == ""
fruit.name = nil
fruit.save
end
end
使用普通命令生成迁移;
rails g migration xxxxx
然后添加:
def change
execute "UPDATE fruits SET name = NULL WHERE name = '' "
end
Fruit.where(name: "").update_all(name: nil)
rails 控制台,迁移,任何你可以执行它的地方。您实际上并不需要迁移,但如果想保持一致,请将其添加到迁移中
假设我有一个名为 fruit 的数据库 table 是这样的:
id name
1 ““
2 “"
3 ““
4 ““
5 ""
6 melon
在这种情况下,我需要编写迁移以将空字符串更改为 null,而不影响 melon
。
会不会是这几行?
def change
update_column fruits, :name, null if :name => ""
end
我猜是很基本的东西,但我有点卡在这里了。 这里最好的方法是什么?
在控制台开发和生产中也是如此:
Fruit.all.each do |fruit|
if fruit.name == ""
fruit.name = nil
fruit.save
end
end
使用普通命令生成迁移;
rails g migration xxxxx
然后添加:
def change
execute "UPDATE fruits SET name = NULL WHERE name = '' "
end
Fruit.where(name: "").update_all(name: nil)
rails 控制台,迁移,任何你可以执行它的地方。您实际上并不需要迁移,但如果想保持一致,请将其添加到迁移中