diff --git a/lib/chess/moves.ex b/lib/chess/moves.ex index bd0d9b9..efdbec5 100644 --- a/lib/chess/moves.ex +++ b/lib/chess/moves.ex @@ -6,6 +6,7 @@ defmodule Chess.Moves do alias Chess.Repo alias Chess.Board alias Chess.Store.Game + alias Chess.Store.Move alias Chess.Moves.Pieces.Pawn alias Chess.Moves.Pieces.Bishop @@ -21,7 +22,7 @@ defmodule Chess.Moves do Multi.new |> Multi.update(:game, Game.move_changeset(game, params)) - |> Multi.insert(:move, Ecto.build_assoc(game, :moves, params)) + |> Multi.insert(:move, Move.changeset(%Move{game_id: game.id}, params)) |> Repo.transaction end diff --git a/lib/chess/store/move.ex b/lib/chess/store/move.ex index 9c560b6..13993d5 100644 --- a/lib/chess/store/move.ex +++ b/lib/chess/store/move.ex @@ -22,7 +22,7 @@ defmodule Chess.Store.Move do def changeset(struct, params \\ %{}) do struct - |> cast(params, required_attrs()) + |> cast(params, permitted_attrs()) |> validate_required(required_attrs()) end @@ -36,5 +36,7 @@ defmodule Chess.Store.Move do } end + defp permitted_attrs, do: ~w[game_id from to piece piece_captured]a + defp required_attrs, do: ~w[game_id from to piece]a end