У меня есть схема с двумя полями, a
и b
, и я хочу, чтобы было обязательно одно из полей. То есть, если указано a
, b
не должно быть, и наоборот.
Есть ли способ элегантно представить это с помощью проверок ревизий Ecto? Примерно так:
schema "foo" do
field(:a, :string)
field(:b, :string)
field(:c, :string)
timestamps()
end
def changeset(transaction, attrs) do
transaction
|> cast(attrs, [:a, :b, :c])
|> validate_required([:c])
|> validate_mutual_exclusion([:a, :b])
end
defp validate_mutual_exclusion(changeset, fields) do
# What goes here?
end