函数 nil.team_name/0 未定义
function nil.team_name/0 is undefined
我有两种查询。两者都使用相同的视图。
一款 returns 最新游戏 JSON。
其他returns所有游戏
查看
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
有效。并且 returns 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
请多多指教。
谢谢。
错误
UndefinedFunctionError
at GET /api/games
function nil.team_name/0
is undefined
表示关联中的一个(或两个)
belongs_to :home_team, Sample.Scoresheet.Team
belongs_to :away_team, Sample.Scoresheet.Team
未设置,game.home_team.team_name
或 game.away_team.team_name
无法到达 team_name
因为它 returns nil
作为一个团队。
应该对数据库进行约束 (table games
),使 teams
的两个外键都是强制性的,这样你就会得到有意义的错误消息 并且数据将始终保持一致。
与此同时,我建议你检查你的种子 and/or 你是如何将 games
插入数据库的,并使 teams
成为 Ecto.Changeset.validate_required/3
的强制项。
我有两种查询。两者都使用相同的视图。 一款 returns 最新游戏 JSON。 其他returns所有游戏
查看
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
有效。并且 returns 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
请多多指教。 谢谢。
错误
UndefinedFunctionError
atGET /api/games
functionnil.team_name/0
is undefined
表示关联中的一个(或两个)
belongs_to :home_team, Sample.Scoresheet.Team
belongs_to :away_team, Sample.Scoresheet.Team
未设置,game.home_team.team_name
或 game.away_team.team_name
无法到达 team_name
因为它 returns nil
作为一个团队。
应该对数据库进行约束 (table games
),使 teams
的两个外键都是强制性的,这样你就会得到有意义的错误消息 并且数据将始终保持一致。
与此同时,我建议你检查你的种子 and/or 你是如何将 games
插入数据库的,并使 teams
成为 Ecto.Changeset.validate_required/3
的强制项。