对变更集的两个属性的存在进行验证的最佳方法是什么?
如果两个属性都没有提供,则验证应该失败
e.g。考虑具有属性的用户模型:name,:uid,:email,:phone
这会有用吗?
{2, 3, 5, 7, 11, 13, 17, 19}
答案 0 :(得分:5)
您可以从以下内容开始:
def changeset(struct, params \\ %{}) do
struct
|> cast(params, ~w(name email uid phone)a)
|> validate_required(:name)
|> validate_required_params(params)
end
end
def validate_required_params(changeset, %{"uid" => _}) do
changeset
|> validate_required(:uid)
end
def validate_required_params(changeset, %{"email" => _}) do
changeset
|> validate_required(:email)
end
def validate_required_params(changeset, _params) do
changeset
|> add_error(:params, "either :uid or :email is required")
end
但您还需要检查是否提供了uid
和email
。在这种情况下是什么?