ember-cp-validations условный валидатор

Я использую ember-cp-проверки на моделях и формах. Я хочу, чтобы проверка была активной только при соблюдении определенных условий. Например, когда маршрут активен или когда компонент используется в определенном контексте.

Чтобы проиллюстрировать, у меня есть основные email модель, которая имеет типичные проверки на самой модели. Когда эта модель используется в контексте учетной записи пользователя, я хочу, чтобы дополнительный валидатор был активным (username-exists валидатор, используемый, чтобы сказать, пытаются ли они обновить свой адрес электронной почты на тот, который существует в другой учетной записи).

Моя модель электронной почты:

import DS from 'ember-data';
import { validator, buildValidations } from 'ember-cp-validations';

const { attr } = DS;

const Validations = buildValidations({
    email: {
        validators: [
            validator('presence', { presence: true, description: 'E-Mail'}),
            validator('format', {
                type: 'email'
            }),
            validator('length', {
                max: 200,
            })
        ]
    },
});

export default DS.Model.extend(Validations, {
    email: attr('string'),
    optin: attr('boolean', { defaultValue: false })
});

У меня уже есть пользовательский валидатор с существующим именем пользователя. Я просто не могу понять, как добавить эту проверку условно.

Простейшим решением было бы добавить проверенный с disabled опция, которая держит его отключенным, если не выполнено условие.

validator('username-available', {
    debounce: 300,
    disabled: computed.bool(what is the dependent key??)
})   

Но я понятия не имею, каким будет зависимый ключ. Я не думаю, что название маршрута доступно в определении модели.

Или я должен добавить условный валидатор к самому компоненту? Есть ли способ добавить валидатор в validators массив из компонента JS?

Я думаю, что я, вероятно, упускаю что-то очевидное;)

1 ответ

Решение

Мне потребовалось время, чтобы выкопать это, когда я искал это. Вот что у меня есть (настройка немного по-другому, но вы должны начать):

  email: {
    disabled: Ember.computed.not('model.attributeInQuestion'),
    validators: [
    ],
  }
Другие вопросы по тегам