Как вызвать атрибут из той же модели для проверки с помощью ember-cp-validation

Есть ли способ вызвать атрибут из той же модели? Потому что я хочу использовать атрибут из model/code.js, чтобы вычислить валидатор другого атрибута из того же файла. Я покажу вам пример.

//model/code.js
import Ember from 'ember';
import DS from 'ember-data';
import {validator, buildValidations} from 'ember-cp-validations';

const CardValidations = buildValidations(
    {
      cardId: {
            validators: [
                validator('presence', true),
                validator('length', {
                    // here instead of 10, I want to use nbBits
                    max: 10
                       
                }
            ]
        }
    }
);

export default Credential.extend(CardValidations, {
    cardId: DS.attr('string'),
    nbBits: DS.attr('number'),

    displayIdentifier: Ember.computed.alias('cardId'),
});

Итак, как вы можете видеть, я хочу вызвать nbBits, чтобы получить конкретную проверку для cardId.
Кто-нибудь знает методы или дает мне советы? Спасибо за ваше время

1 ответ

Решение

Ваш случай описан в официальной документации ember-cp-validations следующим образом:

const Validations = buildValidations({
  username: validator('length', {
    disabled: Ember.computed.not('model.meta.username.isEnabled'),
    min: Ember.computed.readOnly('model.meta.username.minLength'),
    max: Ember.computed.readOnly('model.meta.username.maxLength'),
    description: Ember.computed(function() {
      // CPs have access to the model and attribute
      return this.get('model').generateDescription(this.get('attribute'));
    }).volatile() // Disable caching and force recompute on every get call
  })
});

Ваш еще более простой случай будет выглядеть так:

const CardValidations = buildValidations(
    {
      cardId: {
            validators: [
                validator('presence', true),
                validator('length', {
                    // here instead of 10, I want to use nbBits
                    max: Ember.computed.readOnly('model.nbBits')
                }
            ]
        }
    }
);
Другие вопросы по тегам