Phoenix と Ecto を使用して、主キーで単一レコードのデータベースをクエリしています。すべてのドキュメント/例は、Phoenix コントローラーでの使用法を示しています。
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
. 次のようなことを行うことで、コントローラーでこれを回避しています。
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 が正しくセットアップされていないのではないかと心配しています。Repo.get/2
id 引数をint に自動的に強制する、欠落している Phoenix/Ecto 規則はありますか?