說我有叫果這樣的數據庫表:Rails的遷移改變空字符串爲空
id name
1 「「
2 「"
3 「「
4 「「
5 ""
6 melon
我需要寫一個遷移改變空字符串爲空,而不在這種情況下,影響melon
。
這是關於這些行嗎?
def change
update_column fruits, :name, null if :name => ""
end
我猜的很基本的東西,但我有點卡在這裏。 這裏最好的辦法是什麼?
說我有叫果這樣的數據庫表: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://stackoverflow.com/a/9581790/2235594 –
爲什麼不只是做'update_all','Fruit.where(name:「」).update_all(name:nil) ' – lusketeer
@lusketeer你的意思是在遷移中使用它? – Jax
任何地方,軌道控制檯,遷移,你並不需要遷移,但如果想保持一致,將其添加到遷移 – lusketeer