-6ren">
gpt4 book ai didi

elixir - 使用字符串查询仓库

转载 作者:行者123 更新时间:2023-12-01 05:07:20 26 4
gpt4 key购买 nike

我正在使用 Phoenix 和 Ecto 通过主键查询数据库中的单个记录。所有文档/示例都显示了在 Phoenix Controller 中的用法:

def show(conn, %{"id" => id}) do
m = Repo.get(MyModel, id)

...
end

然而,Phoenix 中的所有参数都是字符串,所以这会抛出 ** (Ecto.InvalidModel) model App.MyModel failed validation when , field id had type string but type integer was expected .我一直在我的 Controller 中通过执行以下操作来解决此问题:
def show(conn, %{"id" => id}) do
m = String.to_integer(id) |> find_my_model_by_id

...
end

defp find_my_model_by_id(id) do
Repo.get(MyModel, id)
end

问题是我还没有看到其他人进行这种类型转换。我担心我没有正确设置 Phoenix 或 Ecto。是否有我缺少的 Phoenix/Ecto 约定会自动强制我的 id 参数为 Repo.get/2到一个int?

最佳答案

你的代码是正确的。在即将推出的 Ecto 版本中,我们希望为这种情况添加自动转换。但是现在,您需要手动转换它。

关于elixir - 使用字符串查询仓库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27532109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com