ember-changeset-validations icon indicating copy to clipboard operation
ember-changeset-validations copied to clipboard

Multi field validation (i.e. one of must be present) can result in incorrect `isValid` state

Open nickschot opened this issue 6 years ago • 1 comments

This might be more of a feature request than a bug (at least with the provided validators).

I have implemented a validator which checks for presence OR for the presence of other fields (so at least one of the fields must be "present" for the validator to pass). Currently there is no way to call validation for these other fields as the actual changeset is not passed to the validator function (just the changes and the model).

The only "workaround" right now is to call validate on the main changeset validating all fields, but this means that before that happens, the isValid state is incorrect (and errors for said fields might be present on the changeset).

This is likely also an issue for the validator proposed in #189 / #191

nickschot avatar Feb 07 '19 12:02 nickschot

Example:

  • Two fields of which one is currently in an invalid state.
  • The other field is filled by a user and changes to valid state.
  • The other field remains invalid even though it passes validation
  • Calling changeset.validate() turns everything valid.

Ideally you'd be able to call changeset.validate('my-other-field') instead of needing to validate the entire changeset.

nickschot avatar Feb 07 '19 12:02 nickschot