如何将自定义验证规则应用于phoenix框架中的模型
问题描述:
那么我想在我的ecto模型中添加自定义验证规则。如何将自定义验证规则应用于phoenix框架中的模型
比方说,我有这样的代码:
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