Rails的迁移改变空字符串为空
说我有叫果这样的数据库表:Rails的迁移改变空字符串为空
id name
1 ““
2 “"
3 ““
4 ““
5 ""
6 melon
我需要写一个迁移改变空字符串为空,而不在这种情况下,影响melon
。
这是关于这些行吗?
def change
update_column fruits, :name, null if :name => ""
end
我猜的很基本的东西,但我有点卡在这里。 这里最好的办法是什么?
Fruit.where(name: "").update_all(name: nil)
轨控制台,迁移,随时随地可以EXCUTE它。你不需要迁移,但如果想保持一致,将它添加到迁移
:
Fruit.all.each do |fruit|
if fruit.name == ""
fruit.name = nil
fruit.save
end
end
谢谢,但我更喜欢迁移。 – Jax
使用通常的命令以产生一个迁移;
rails g migration xxxxx
,然后添加:
def change
execute "UPDATE fruits SET name = NULL WHERE name = '' "
end
你在sql中使用'name IS NULL' –
@TheCha͢mp,这是行得通的,试试吧! – CodeMaker
http://*.com/a/9581790/2235594 –
为什么不只是做'update_all','Fruit.where(name:“”).update_all(name:nil) ' – lusketeer
@lusketeer你的意思是在迁移中使用它? – Jax
任何地方,轨道控制台,迁移,你并不需要迁移,但如果想保持一致,将其添加到迁移 – lusketeer