使用简单变更集的给定示例:
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:email, :password])
|> validate_required([:email, :password])
|> validate_something
end
如果前一个validate_something/1
失败,那么跳过validate_required/3
验证的最佳方法是什么?
最明显的是将所有内容包装在if/else
语句中,如:
defp validate_something(changeset) do
if changeset.valid? do
...
else
changeset
end
end
但我更喜欢使用类似保护条款的东西而不用arrowing我的代码。
答案 0 :(得分:2)
找到更好的方法:
defp validate_something(%{valid?: true} = changeset) do
...
end
defp validate_something(changeset), do: changeset