Kom*_*mbo 5 elixir ecto phoenix-framework
我正在使用 Phoenix 和 Ecto 通过主键查询数据库中的单个记录。所有文档/示例都显示了在 Phoenix 控制器中的用法:
def show(conn, %{"id" => id}) do
m = Repo.get(MyModel, id)
...
end
Run Code Online (Sandbox Code Playgroud)
然而,Phoenix 中的所有参数都是字符串,所以这会抛出一个** (Ecto.InvalidModel) model App.MyModel failed validation when , field id had type string but type integer was expected
. 我一直在我的控制器中通过执行以下操作来解决此问题:
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
Run Code Online (Sandbox Code Playgroud)
问题是我还没有看到其他人进行这种类型转换。我担心我没有正确设置 Phoenix 或 Ecto。是否有我缺少的 Phoenix/Ecto 约定会自动将我的 id 参数强制Repo.get/2
转换为 int?
归档时间: |
|
查看次数: |
931 次 |
最近记录: |