문제

테스트에 사용되는 객체 그래프에 대한 테스트 및 Hornsby 시나리오에 RSPEC을 사용하고 있습니다.

카운터 캐시 열을 초기화되지 않은 상태로 두지 않고 0 값으로 초기화하는 것이 좋습니다 (NIL)? 아니면 카운터 캐시 열을 생성하는 마이그레이션에서 기본값을 정의해야합니까?

도움이 되었습니까?

해결책

예, 기본값을 설정해야합니다. 그렇지 않으면 널을 처리하려면 특별한 사례 수학 작업이 필요합니다.

포스트 개체 배열이 있고 주석 수를 합치고 싶다고 가정 해 봅시다.

0으로 초기화하는 경우 @posts.sum(&:comment_count) 그러나 그렇지 않으면 그것이 실패하기 때문에 그렇지 않을 수도 있습니다.

다음과 같이 열을 정의하는 것이 좋습니다.

add_column :posts, :comments_count, :integer, :default => 0, :null => false

다른 팁

Rails는 간단히 다음 SQL을 보냅니다

UPDATE posts SET comment_count = comment_count + 1, WHERE id IN (10, 15)

따라서 DB는 정의되지 않은 +1 == 1 또는 Rails가 자체 초기화를 수행한다는 것을 알고 있습니다. 두 경우 모두 이것은 나에게 안정적인 행동처럼 보이므로 0으로 설정하지 말고 작업을 저장하지 마십시오. 어쨌든 초기화를했는지 확인할 수 없으므로 (없이도 동일하게 작동합니다) 어떻게 테스트 할 것입니다. 그리고 그것이 당신에 의해 초기화 될 수 없다면, 당신은 미래의 교정 측면에서 실제로 얻은 것을 실제로 얻었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top