Zac*_*Zac 2 elixir ecto phoenix-framework
这会像定义你的架构一样简单def changeset
而且从不写任何东西Repo.insert(changeset)
吗?
这是可能的,我发现它是验证API请求的完美方式.
您可以在没有后端的情况下定义模型:
defmodule MyApp.Models.File do
schema "" do
field :description, :string, virtual: true
field :url, :string, virtual: true
field :file_name, :string, virtual: true
field :ext, :string, virtual: true
field :mime, :string, virtual: true
field :size, :integer, virtual: true
end
def new_file_cs(model, params) do
model
|> cast(params, ~w(url file_name ext mime size), ~w(description))
end
end
Run Code Online (Sandbox Code Playgroud)
然后在某处将其称为:
def handle_request(data) do
changeset = File.new_file_cs(%File{}, data)
case changeset.valid? do
true -> :ok
false -> {:error, changeset}
end
end
Run Code Online (Sandbox Code Playgroud)
这种错误响应可以与phoenix生成的ChangesetView一起使用,以返回统一的错误响应.
总而言之,您的模型应该具有空模式"",并且所有字段都应该是虚拟的:true