está manejando los errores del lado del servidor personalizados en datos de brasas cuando es posible guardar el modelo

¿Existe una forma adecuada de manejar el error personalizado al guardar un modelo? Para dar un ejemplo, digamos que tengo un modelo con solo dos propiedades "nombre" y "valor". Y cuando hago:

var myModel = this.get('store').createRecord('myModel', {"name": "someName", "value": "someValue"});
myModel.save().then(function() {
    //if success
    //server responded with {"myModel:{"id":1,"name":"someName","value":"someValue"}"}
},function() {
    //if failure
    //server responded with {"error":"some custom error message"}
    //BUT HOW TO CATCH THIS AND POSSIBLY REMOVE THE MODEL FROM THE STORE

});

Una forma de solucionar esto es hacer una llamada ajax adicional para verificar si el nombre es único y luego guardar. Me pregunto cuál es el enfoque mejor / más elegante aquí.

Gracias dee

EDITAR: Pensé que podría ayudar un poco dar más contexto en el lado del servidor de las cosas en groovy. Asi que aqui esta:

En mi controlador tengo:

def create() {

    try {
        newRow = someService.create(params)
        render someService.list(newRow) as JSON//returns data in format needed by ember-data
    }
    catch (ValidationException ex) {
        def errors = ["errors":[]]

        ex.errors.allErrors.each{
            if(it.arguments[0] == "fieldName" && it.code=="constrantViolated"){
                errors.errors.push(["field":it.arguments[0],"message":"some custom message"])
            }
        }
        //I am using 422 here because of post in http://stackoverflow.com/questions/7996569/can-we-create-custom-http-status-codes
        render(status: 422, contentType: 'JSON', text: (errors as JSON))
    }

}

Luego en mi controlador de brasas:

    var myModel = self.get('store').createRecord('myModel ', myModelDataInJSON);
myModel .save().then(function () {
        //if success
                },
    function (response) {
        myModel .deleteRecord();
        var errors = $.parseJSON(response.responseText);
        for (var key in errors.errors) {
            //do something
        }
    });

Respuestas a la pregunta(3)

Su respuesta a la pregunta