У меня есть два вида запросов. Оба используют один и тот же вид. Возвращается последняя игра JSON. Другой возвращает все игры.
Просмотр
def render("game.json", %{game: game}) do
%{id: game.id,
season_id: game.season_id,
game_name: game.game_name,
home_team_id: game.home_team_id,
home_team_name: game.home_team.team_name,
away_team_id: game.away_team_id,
away_team_name: game.away_team.team_name,
comments: game.comments}
end
Работает. И возвращает JSON.
def latest_game do
query = from g in Game,
order_by: [desc: g.game_date, desc: g.game_time],
preload: [:away_team, :home_team]
query
|> first(:game_date)
|> first(:game_time)
|> Repo.one()
end
Но это не работает. Он показывает ошибку UndefinedFunctionError at GET /api/games function nil.team_name/0 is undefined
.
def list_games do
query = from g in Game,
preload: [:away_team, :home_team]
Repo.all(query)
end
Это модель.
defmodule Sample.Scoresheet.Game do
use Ecto.Schema
import Ecto.Changeset
schema "games" do
field :game_name, :string
field :game_date, :date
field :game_time, :time
belongs_to :home_team, Sample.Scoresheet.Team
belongs_to :away_team, Sample.Scoresheet.Team
timestamps()
end
Пожалуйста, дайте мне несколько советов. Спасибо.