Rails迁移将空字符串更改为null

时间:2016-06-09 11:13:45

标签: ruby-on-rails database-migration rails-migrations

假设我有一个名为fruit的db表,如下所示:

id  name
1   ““
2   “"
3   ““
4   ““
5   ""
6   melon

在这种情况下,我需要编写一个迁移来将空字符串更改为null,而不会影响melon

它会成为这些界限吗?

def change
  update_column fruits, :name, null if :name => ""
end

我想是非常基本的东西,但我有点卡在这里。 这里最好的方法是什么?

3 个答案:

答案 0 :(得分:0)

在控制台开发和生产中:

Fruit.all.each do |fruit|
  if fruit.name == ""
    fruit.name = nil
    fruit.save
  end
end

答案 1 :(得分:0)

使用normal命令生成迁移;

rails g migration xxxxx

然后添加:

def change
  execute "UPDATE fruits SET name = NULL WHERE name = '' "
end 

答案 2 :(得分:0)

Fruit.where(name: "").update_all(name: nil)

rails console,migration,您可以在任何地方执行它。您并不真正需要迁移,但如果想要保持一致,请将其添加到迁移