2014-11-09 5 views
0

counter_culture 메서드에서 column_names를 정의 할 때 깊이 연관시킬 수 있습니까? 문서와 예제에서는 항상 column_names를 결정하는 데 사용되는 모델에 속한 속성을 사용합니다. 그러나 속성이 연관된 모델에 속하면 어떻게 될까요?counter_culture sum의 깊게 연결된 column_names

예를 들어,이

# Account model 
counter_culture :user, 
    column_name: Proc.new { |account| account.has_billable_hours? ? 'billed_hours_sum' : nil }, 
    delta_column: 'billed_hours', 
    column_names: { ["account.billed_hours > ?", 0] => "billed_hours_sum" } 

관련된 예를 작동

# Account model 
counter_culture :user, 
    column_name: Proc.new { |account| account.clients.has_billable_hours? ? 'billed_hours_sum' : nil }, 
    delta_column: 'billed_hours', 
    column_names: { ["accounts.clients.billed_hours > ?", 0] => "billed_hours_sum" } 

위를 들면, 당신이 (당신은 할 수 없음) 사용이 COLUMN_NAMES 방법에 조인은이

처럼 보일 것입니다 수있는 경우
joins(:account=>:client).where("accounts.clients.billed_hours > ?", 0) 

두 번째 예는 내 질문을 보여줍니다. 평가해야하는 속성이 상위 모델에 속하지 않고 관련 모델에 속하는 경우 column_names를 어떻게 정의합니까?

답변

0

column_names는 counter_culture_fix_counts를 호출 할 때만 필요합니다. 따라서 메소드 호출에서 column_names 옵션을 86 '로 설정하고 해당 카운터/컬럼을 수동으로 업데이트하는 rake 태스크를 작성했습니다.

+0

나는 레이크 작업에 클래스 메소드 콜백을 사용했다. – hellion