凤凰卫视如何将字符串参数一次性转换为整数?

问题描述 投票:0回答:1

当我从表单中获取参数,然后使用 Multi.insert(:insert, game);

value `"12"` for `Server.Sample.Game.team_id` in `insert` does not match type :id

我得到的参数是这样的。然后把 team_id 在游戏地图上。

game = %Game{team_id: attrs["team_id"], ....}
Multi.new()
  |> Multi.insert(:insert, game)
  |> Repo.transaction()

当然,我认为错误类型team_id应该是整数,而不是字符串。我的问题是,如果有很多字符串,我是否应该将字符串转换为整数?

我想找到最好的方式转换为整数的每个项目。

谢谢。

elixir phoenix-framework ecto
1个回答
0
投票

就像Ashley说的,你可以用一个自定义函数来使用变化集,就像这样。

def changeset(struct, params) do
  struct
  |> cast(params, [:name]) # your fields
  |> team_id_to_integer()
end

def team_id_to_integer(changeset) do
  team_id = get_field(changeset, :team_id)

  if is_bitstring(team_id) do
    put_change(changeset, :team_id, String.to_integer(team_id)
  else
    changeset
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.