2016-04-30 16 views
3

まあ、私のectoモデルでカスタム検証ルールを追加したいと思います。phoenixフレームワークのモデルにカスタム検証ルールを適用する方法

だが、私はこのコードを持っているとしましょう:私は上のエラーをスローするmy_awesome_validation機能で書くとすべきである

def changeset(model, params \\ :empty) do 
    model 
    |> cast(params, @required_fields, @optional_fields) 
    |> validate_length(:description, min: 280) 
    |> my_awesome_validation(:email) 
    end 

    def my_awesome_validation(email) do 
    # ?? 
    end 

何?

答えて

7

my_awesome_validationにパイプする方法では、最初の引数としてchangeset、2番目の引数として:emailが得られます。

これは、与えられたフィールドは、少なくとも1 @が含まれている場合は、検証する方法を次のとおりです。

def my_awesome_validation(changeset, field) do 
    value = get_field(changeset, field) 
    if value =~ "@" do 
    changeset 
    else 
    add_error(changeset, field, "does not contain '@'") 
    end 
end 
関連する問題