3

하나의 열을 재설정하기 위해 한 달에 한 번 실행되는 레이크 작업을 구현하려고합니다. 열을 기본값으로 재설정하는 것을 선호하지만이를 수행하는 데 도움이되는 방법을 찾을 수 없습니다. reset_column_information이 작동하지 않습니다.레일이 단일 열을 재설정합니다.

활성 레코드에서 단일 열을 재설정하는 가장 효율적인 방법은 무엇입니까?

답변

7

기본 방법 #update_all은 데이터베이스에서 직접 업데이트를 수행하므로 매우 효율적입니다. 모델이로드되지 않기 때문에 그러나 그것은 콜백을 우회 : 기본으로 재설정 http://apidock.com/rails/ActiveRecord/Base/update_all/class

SomeModel.update_all("some_column = 4"); # sets all some_column attributes to 4 

당신이 처음에 기본을 설정하는 방법에 따라 달라집니다. 모델에서 기본값이 계산 된 경우 모든 레코드를 선택하고 인스턴스화해야하므로 속도가 매우 느려질 수 있습니다. 그것이 데이터베이스에 정의되어 있다면 가능할 수도 있지만 데이터베이스와 관련 있다고 생각합니다.

+0

잘 작동합니다. 감사합니다. –

0

하드 코어 인 경우 마이그레이션에서 열을 삭제 한 다음 다시 만들 수도 있습니다. 때때로 이것은 훨씬 더 빠를 것입니다. 중요한 응용 프로그램에서는 자동으로 수행하지 않겠지 만, 로컬 시스템을 사용하여 빠르고 간단한 테스트를 원한다면 효과적 일 수 있습니다.

관련 문제