2013-02-15 5 views
1

나는 다음을 수행 마이그레이션을 썼다 :두 개의 #update_all 줄을 한 줄로 결합 할 수 있습니까?

Event.update_all 'tom_cancelled = false', 'tom_cancelled IS NULL' 
Event.update_all 'jerry_cancelled = false', 'jerry_cancelled IS NULL' 

내가 그것을 건조이 함께 결합 (내가 어떻게 할 수 있다면) 할 수 있습니까? 블록을 사용합니까?

+4

수 없습니다. 그것들은 조건이 다른 진술로서 다른 기록에 적용됩니다. – meagar

+0

'CASE' 문에 그것들을 압축 할 수는 있지만, 이미 가지고있는 것은 아마 Rails에서 적절한 방법 일 것입니다. 'UPDATE tbl SET tom_cancelled = 사례 tom_cancelled IS NULL이면 거짓 ELSE tom_cancelled END, jerry_cancelled = jerry_cancelled가 NULL 인 경우 거짓 인 경우 거짓 인 경우 jerry_cancelled END; –

답변

2

ActiveRecord에서 루프를 사용하려는 경우가 아니라면 결과 집합의 모든 레코드에 대해 하나의 UPDATE 쿼리가 끝나고 SELECT에 대해 + 1이 끝나기 때문에이 문장을 이해할 수 없습니다.

현재 결과 집합에 몇 개의 레코드가 있더라도 두 개의 쿼리 만 실행합니다.

현재 코드를 더 추상화 할 필요가 없습니다. 특히 마이그레이션 내에서 실행되는 것으로 간주합니다.

관련 문제