Qual é o padrão padrão para validações de dados ember? (estado inválido, tornou-se inválido…)

Eu meio que tenho lutado com isso há algum tempo; vamos ver se alguém pode me ajudar.

Embora não seja explicitamente dito no Readme, o ember-data fornece um pouco de suporte a validações. Você pode ver isso em algumas partes do código e documentação:

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

O adaptador REST não adiciona suporte a validações por si próprio, mas descobri que, se eu acrescentar algo assim nas chamadas do ajax, posso colocar o modelo em um estado "inválido" com o objeto errors que veio do lado do servidor:

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

Então eu posso facilmente para o seguinte:

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.

A coisa é: como você vê,transações não tentam comprometer. Isso é explicadoAqui eAqui.

Então a coisa é: se eu não posso reutilizar um commit, como devo lidar com isso? Eu meio que suspeito que tem algo a ver com o fato de eu estar assincronamente colocando o modelo noinvalid estado - porlendo a documentação, parece que é algo destinado a validações do lado do cliente. Neste caso, como devo usá-los?

questionAnswers(5)

yourAnswerToTheQuestion