2016-06-09 2 views
0

내가이 같은 과일라는 DB 테이블을 말해봐 :레일 마이그레이션이 null로 빈 문자열을 변경

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

내가이 경우 melon에 영향을주지 않고 null로 빈 문자열을 변경하는 마이그레이션을 작성해야합니다.

이 줄에 뭔가가 있습니까?

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

나는 아주 추측 할 만하지만, 나는 여기에 조금 붙어있다. 가장 좋은 방법은 무엇입니까? 뿐만 아니라 콘솔 개발 및 생산에

+2

왜 'update_all', 'Fruit.where (name : "") .update_all (name : nil) ' – lusketeer

+0

@lusketeer 마이 그 레이션에서 그 뜻을 사용합니까? – Jax

+0

어디서나, 레일 콘솔, 마이 그 레이션, 당신은 정말로 마이 그 레이션이 필요하지 않지만 일들을 일관되게 유지하려는 경우, 마이 그 레이션에 추가 – lusketeer

답변

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

레일 콘솔, 마이그레이션, 어디서나 당신은 그것을 excute에 있습니다. 마이그레이션을 실제로 수행 할 필요는 없지만 일을 일관성있게 유지하려면 마이그레이션에 추가하십시오.

0

:

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

고마워요.하지만 마이 그 레이션을 선호합니다. – Jax

0

마이그레이션을 생성하는 일반적인 명령을 사용하여;

rails g migration xxxxx 

그리고 추가

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

SQL에서 당신은'name IS NULL'을 사용합니다. –

+0

@ TheCha͢mp, 이것이 효과가 있습니다! – CodeMaker

+0

http://stackoverflow.com/a/9581790/2235594 –

관련 문제