如何将自定义验证规则应用于 phoenix 框架中的模型

How to apply a custom validation rule to a model in phoenix framework

我想在我的 ecto 模型中添加自定义验证规则。

假设我有这个代码:

  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

我应该在my_awesome_validation函数中写什么来抛出错误等等?

您进入 my_awesome_validation 的方式,它将 changeset 作为第一个参数,原子 :email 作为第二个参数。

这是验证给定字段是否至少包含一个 @:

的方式
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