0

В моем представлении (Лига) Я хочу перечислить все матчи и отметить матч в том виде, в каком он играл, в выигрышной команде или в матче в качестве галстука.Получение победителя матча - путь рельсов?

Чтобы узнать, является ли это галстуком или кто победитель, я должен проверить счет каждого противника. Где я буду делать эти вычисления? просмотреть помощник?, масштаб модели?

Моя идея состоит в том, чтобы иметь три функции, которые проверяют каждый матч, когда я перечисляю совпадения:
match.played? -> true/false
match.tie? -> true/false
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

Вы определенно на правильном пути. Я бы методы вы предложили на мой Match модели с одним исключением:

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

Я бы тогда иметь вид помощника, который назвал эти методы, чтобы определить, как их делают. I.e. Разве это играли? Это была связь? Кто выиграл.

0

Ваши вопросы в области знаний немного шире для окончательного ответа;) Задайте 5 разработчиков, и вы получите 12 различных ответов.

Это то, что я хотел бы сделать: Ваша идея реализовать эти методы экземпляра является хорошей отправной точкой, хотя мне лично не нравится «?». методы, которые не возвращают логическое значение, в моем oppinion это должно быть просто #winner и должно возвращать экземпляр команды, а не идентификатор (я предполагаю, что есть модель «Team»). Возможно, вам стоит подумать о дополнительном методе #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 и сделать это в своем приветствии помощником (возврат «еще не играл» или что-то еще).