0

Partner 광고 네트워크의 제휴 파트너를 나타내는 모델이 있다고 가정 해 보겠습니다. 각 파트너는 고정 (절대 통화) 또는 변동 (퍼센트) 할 수있는 커미션과 연결됩니다. partners 테이블은 열 commission_type, commission_fixedcommission_variable 인이 모델입니다. 이것은 단순화 된 것이므로 실제로 7 가지 커미션 유형이 있으므로 단일 테이블 상속 또는 여러 모델은 많은 추가 코드가 필요합니다. 내보기에서모델 또는 도우미의 모델 속성에 대한 동적 번역이 필요합니까?

, 나는 다음과 같이 수수료를 표시하려면 :

<div class="partner_commission"><%= partner.commission %></div> 

(사용 모델 방법)

또는

<div class="partner_commission"><%= commission(partner) %></div> 

(사용 도우미 메서드)

이제 하나의 중요한 측면은 전체 응용 프로그램이 다국어로되어 있으므로 모든 strin g는 I18n.translate/I18n.t 도우미로 번역되어야합니다. 번역에는 번호/통화 형식 외에도 커미션 문자열에 대한 맞춤 번역이 필요합니다 (이유를 신경 쓰지 마십시오).

방법이 (단순화 된 모델 버전)과 같습니다

def commission 
    case self.commission_type 
    when 'commission_fixed' 
    t(:commission_fixed, :value => self.commission_fixed) 
    when 'commission_variable' 
    t(:commission_variable, :value => self.commission_variable) 
    end 
end 

질문은 : 나는 commission 방법 등 MVC 철학, 모범 사례, 준수로 구현해야 어디?

보조자 도우미에 넣는 이유는 데이터 자체가 아닌보기에서 커미션 데이터의 표시에만 관련된다는 것입니다. 반면에 단일 모델에만 관련된 도우미 메서드를 구현해야하지만 잘못된 느낌을받는 여러보기에서 사용됩니다.

에 넣는 이유는 커미션 문자열을 파생 된 특성으로 볼 수 있으므로 모델에 정의해야합니다. 반면에 i18n보기 도우미를 수동으로 포함시켜 모델에 I18n.translate을 사용하면 이상하게 느껴집니다.

당신은 어떻게 생각하십니까?

+0

이거나 모델 메소드'{: type => : commission_variable, : value => 0.20}'에서 해시를 반환하고 뷰에서 I18n을 사용할 수 있습니다. – rubish

+0

매개 변수가 실제 구현에서 항상 동일하지 않기 때문에 가능하지 않습니다 (즉, 일부 커미션 유형의 경우 'value'이지만 다른 경우에는 'range_min'및 'range_max'임). –

답변

0

나는 그것이 모델에 있어야한다고 말할 것이다. 모델은 데이터를 제어하기로되어 있으며 정확히 커미션 메소드가 수행하고자하는 것입니다. MVC에서는 모델 메서드를 사용하여 데이터를 결합/수정하여 멋진 형식으로 반환하는 것이 완벽하게 가능합니다.

관련 문제