2つの値のうち1つが存在するか両方の値が存在するかを確認するORロジックの条件付き検証を行う方法を教えてください。Ectoでの条件付き検証 - 2つのフィールドのうちの1つが必要です
ので、例えば、私はemail
またはmobile
フィールドが満たされていることを確認するチェックしたい場合は...私はの少なくとも1を検証するためにvalidate_required_inclusion
のfields
にリストを渡すことができるようにしたいですリスト内のフィールドはnullではありません。
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:email, :first_name, :last_name, :password_hash, :role, :birthdate, :address1, :address2, :city, :state, :zip, :status, :mobile, :card, :sms_code, :status])
|> validate_required_inclusion([:email , :mobile])
end
def validate_required_inclusion(changeset, fields, options \\ []) do
end
どのようにこの条件付きOR検証を行うことができますか?
私はこれが好き...私はそれと遊ぶ必要があります。ありがとうございました! – DogEatDog
フィールドが既にモデルにあり、変更されていない場合、これは機能しません。 'content'があっても' changes'が空であるため、Post.changeset(%Post {content: "foo"}、%{}) 'は失敗します。 – Dogbert
ありがとう@Dogbert、良いキャッチ。私は答えを更新しましたが、空のフィールドはチェックしません。 – kmptkp