2016-11-21 11 views
1

これはあなたのスキーマとdef changesetを定義するのと同じくらい単純で、Repo.insert(changeset)を書くことはないでしょうか?モデルを使用せずにエリクセルチェンジセット/検証を使用することはできますか?

+0

真では「」モデルを使用せずに、あなたがそのスキーマのためのデータベーステーブルを使用せずに意味ですか? – Dogbert

+0

これは正しいです - データベースにデータを挿入する必要はなく、データを検証するだけです – Zac

答えて

4

を定義せずにチェンジを使用することができることは可能であると私は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 

、その後、どこかのようにそれを呼び出す:

def handle_request(data) do 
    changeset = File.new_file_cs(%File{}, data) 
    case changeset.valid? do 
    true -> :ok 
    false -> {:error, changeset} 
    end 
end 

このようなエラー応答が均一なエラー応答を返すために不死鳥によって生成ChangesetViewで使用することができます。要約する

、あなたのモデルは、「空のスキーマを持つべきである」とすべてのフィールドには、仮想のようになります。

関連する問題