많은 'line_items'가있는 '주문'이라는 두 개의 관련 테이블 세트가 있습니다. 광고 항목과 연결된 수량도 있습니다 (예 :: total_cache에 대한 카운터 캐시
Order1가
LINE_ITEM A : 3
LINE_ITEM의 B : 수량 '초보자 직조 바구니' '는 거짓이 흡혈 안내'수량 : I 마이그레이션을 설정하면 1
내가 양을 포함 할 수있다 사용 : I 라인 항목의 수량에 통과 할 수없는이기 때문에 나에게 항목 (4)의 정확한 수를 제공
Order.find(:all).each do |o|
o.update_attribute :line_items_count, o.line_items.map(&:quantity).sum
end
을,하지만 난 나타나지 않는 것은 주문 모델에 그것을 할 수 있도록 , 광고 항목 수를 계산합니다 (2).
그래서 LINE_ITEM 모델에서 내가 가진 :
belongs_to :order, :counter_cache => true
올바르게 4 대신이 말한다 있도록 내가 양을 지정할 수있는 방법이 있나요?
안녕하세요, 코드 예제에 감사드립니다. 매우 유용합니다. 사실은 이것을 구현했지만 before_save 콜백에 대한 업데이트는 after_save 대신 콜백했다. 이것이 어떤 차이를 만들겠습니까? – GrahamJRoy
'before_save' 파일에'LineItem'이 저장되어 있지 않다면 잘못된 정보로 업데이트 할 수 있습니다. – theIV
'before_save' 콜백을 실행 한 후 save가 실패 할 수 있습니다. 그럴 경우'Order' 테이블을 조기에 업데이트하고 있습니다. –