¿Cuál es el patrón estándar para las validaciones de datos de brasas? (estado inválido, se volvió inválido ...)

He estado luchando con esto por algún tiempo; A ver si alguien me puede ayudar.

Aunque no se dice explícitamente en el archivo Léame, los datos de brasas brindan un poco de soporte para las validaciones. Puedes ver eso en algunas partes del código y la documentación:

https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/model/states.js#L411

https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/model/states.js#L529

El adaptador REST no agrega soporte de validaciones en sí mismo, pero descubrí que si agrego algo como esto en las llamadas ajax, puedo poner el modelo en un estado "no válido" con el objeto de errores que proviene del servidor:

error: function(xhr){
  var data = Ember.$.parseJSON(xhr.responseText);
  store.recordWasInvalid(record, data.errors);
}

Así que puedo fácilmente a lo siguiente:

var transaction = App.store.transaction();
var record = transaction.createRecord(App.Post);
record.set('someProperty', 'invalid value');
transaction.commit()
// This makes the validation fail

record.set('someProperty', 'a valid value');
transaction.commit();
// This doesn't trigger the commit again.

La cosa es: como ves,las transacciones no intentan volver a comprometerse. Esto se explicaaquí yaquí.

Así que la cosa es: si no puedo reutilizar un compromiso, ¿cómo debo manejar esto? Sospecho que tiene algo que ver con el hecho de que estoy asignando asíncronamente el modelo a lainvalid estado - porleyendo la documentaciónParece que es algo para validaciones del lado del cliente. En este caso, ¿cómo debo usarlos?

Respuestas a la pregunta(5)

Su respuesta a la pregunta