Skip to content

Instantly share code, notes, and snippets.

@landongn
Created December 9, 2016 04:23
Show Gist options
  • Save landongn/5d4e01270b35310f084208332d753d4b to your computer and use it in GitHub Desktop.
Save landongn/5d4e01270b35310f084208332d753d4b to your computer and use it in GitHub Desktop.
def new_character(struct, params \\ %{}) do
struct
|> cast(params, [:name, :player_id, :class_id])
|> validate_required([:name, :class_id, :player_id])
|> cast_assoc(:class, required: true)
|> cast_assoc(:player, required: true)
end
@landongn
Copy link
Author

landongn commented Dec 9, 2016

Error:

#Ecto.Changeset<action: nil,
 changes: %{class_id: 1, name: "Lando", player_id: 2},
 errors: [player: {"can't be blank", []}, class: {"can't be blank", []}],
 data: #Server.Character<>, valid?: false>
[error] GenServer #PID<0.365.0> terminating
** (Ecto.InvalidChangesetError) could not perform insert because changeset is invalid.

* Changeset changes

%{class_id: 1, name: "Lando", player_id: 2}

* Changeset params

%{"class_id" => 1, "name" => "Lando", "player_id" => 2}

* Changeset errors

[player: {"can't be blank", []}, class: {"can't be blank", []}]

    (ecto) lib/ecto/repo/schema.ex:127: Ecto.Repo.Schema.insert!/4
    (server) web/channels/character_channel.ex:84: Server.CharacterChannel.handle_in/3
    (phoenix) lib/phoenix/channel/server.ex:226: anonymous fn/4 in Phoenix.Channel.Server.handle_info/2
    (stdlib) gen_server.erl:601: :gen_server.try_dispatch/4
    (stdlib) gen_server.erl:667: :gen_server.handle_msg/5
    (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
Last message: %Phoenix.Socket.Message{event: "game.zone.character.class-selected", payload: %{"class" => 1, "name" => "Lando", "token" => "SFMyNTY.g3QAAAACZAAEZGF0YWECZAAGc2lnbmVkbgYAfQLN4VgB.myJ8-9t5fv9nOiCQY1cLQfl0gp93GqyvdtOgenkfJKY", "user_id" => 2}, ref: "18", topic: "character"}
State: %Phoenix.Socket{assigns: %{}, channel: Server.CharacterChannel, channel_pid: #PID<0.365.0>, endpoint: Server.Endpoint, handler: Server.UserSocket, id: nil, joined: true, pubsub_server: Server.PubSub, ref: nil, serializer: Phoenix.Transports.WebSocketSerializer, topic: "character", transport: Phoenix.Transports.WebSocket, transport_name: :websocket, transport_pid: #PID<0.361.0>}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment