0

내 (리그)보기에서 나는 모든 경기를 나열하고 경기, 승리 한 팀 또는 매치를 동점으로 표시하고 싶습니다.경기 승자 얻기 - 레일 방식?

동점인지 또는 승자가되는지 알아 보려면 각 상대방의 점수를 확인해야합니다. 이 계산은 어디에서합니까? 보기 도우미?, 모델 범위?

제 아이디어는 일치 항목을 나열 할 때 일치하는 항목을 확인할 때 세 가지 기능을 사용하는 것입니다.
match.played? -> 참/거짓
match.tie? -> 참/거짓
match.winner? -> team_id가 가장 높은 점수를 얻습니다.

데이터베이스 (PostgreSQL을)

일치

id | league_id | date 
---+-----------+---------- 
1 | 1   | 2016-03-21 21:00:00 
2 | 1   | 2016-03-22 09:00:00 
... 

반대 당신은 옳은 길을 확실히있어

id | match_id | team_id | score 
---+----------+---------+-------- 
1 | 1  | 1  | 0 
2 | 1  | 2  | 1 
3 | 2  | 3  | 1 
4 | 2  | 4  | 1 
4 | 3  | 1  | 
4 | 3  | 2  | 
.... 

답변

1

(연주하지 않을 경우 점수가 null). 나는 한 가지 예외 내 Match 모델이 제안 된 방법이있을 것입니다 : 다음을 렌더링하는 방법을 결정하기 위해 이러한 방법이라고 볼 수 도우미있을 것

match.winner #=> returns the Team object of the winner (or nil). 

. 예. 연주 됐나요? 넥타이 였어? 누가 이겼어.

0

질문 범위는 확실한 대답을 위해 약간 넓습니다.) 5 명의 개발자에게 질문하면 12 가지 답변을 얻을 수 있습니다.

그렇습니다. 내가 한 일은 다음과 같습니다. 개인적으로 "?"를 선호하지 않지만 이러한 인스턴스 메서드를 구현하기위한 아이디어는 좋은 출발점입니다. 부울 값을 반환하지 않는 메서드는 내 질문에 단지 #winner이어야하며 id가 아닌 팀 인스턴스를 반환해야합니다 ("팀"모델이 있습니다). 보완적인 #loser 방법에 대해 생각해보십시오.

로보기는 다음과 같이 보일 수 있습니다 :

<table> 
    <% @matches.each_with_index do |match, i| %> 
    <tr> 
    <td class="match number"> 
     <%= i + 1 %> 
    </td> 
    <td class="team-1"> 
     <%= match.team_1 %> 
    </td> 
    <td class="team-2"> 
     <%= match.team_2 %> 
    </td> 
    <td class="winner"> 
     <% if match.played? %> 
     <!-- this would be a view helper since you have to consider 
      the tie situation and we do not want that much logic 
      in the view. It would return a string with either the 
      teams name or "tie". --> 
     <%= winner_of_match match %> 
     <% else %> 
     N/A 
     <% end %> 
    </td> 
    <!-- etc... --> 
    </tr> 
    <% end %> 
</table> 

이 당신에 구축 할 수있는 아이디어를 제공하기 위해 단지 아주 기본적인 것입니다. 예를 들어 if match.played을 제거하고보기 도우미에서 수행 할 수 있습니다 ("아직 재생되지 않음"또는 무엇인가 반환).