He tenido la intención de responder a tu comentario en mi publicación de ayer, así que me alegra que hayas hecho la pregunta aquí.
Debo comenzar diciendo que escribí ember-rest como una capa muy delgada sobre jQuery.ajax. No es terriblemente avanzado, y ni siquiera hay una instalación integrada para asociaciones. Sin embargo, estoy considerando agregar uno ahora que esta lib está siendo bastante útil. Como verá en el siguiente código, este concepto puede manejarse, pero debería abstraerse mejor en la lib.
Las asociaciones se pueden gestionar creando una instancia de un controlador de recursos dentro de cada recurso principal. Cada controlador de recursos particular debe administrar una matriz particular de recursos, pero no necesariamente todos los recursos de un tipo particular.
En su caso, se podría extender ResourceController para gestionar los comentarios para las conversaciones:
App.ConversationComments = Ember.ResourceController.extend({
resourceType: App.Comment,
// override _resourceUrl() to base the url on the conversation
_resourceUrl: function() {
return this.get("conversation")._resourceUrl() + "/comments";
}
});
A continuación, podría configurar una instancia de ConversationComments para cada conversación:
App.Conversation = Ember.Resource.extend({
resourceUrl: '/conversations',
resourceName: 'conversation',
resourceProperties: ['prop1', 'prop2']
// init comments
init: function() {
this.set("comments", App.ConversationComments.create({ conversation: this }));
}
});
Por último, pero no menos importante, Necesitará recuperar los comentarios para cada conversación:
conversation.get("comments").findAll();
Si tiene todos los comentarios en json, podría usar alternativamente loadAll(). Dónde y cuándo llame a loadAll() o findAll() depende de las necesidades de su aplicación. Obviamente, querrá reducir el número de llamadas ajax para obtener el mejor rendimiento.
Ember-data es un proyecto mucho más ambicioso que ember-rest, y ya tiene soporte para asociaciones, así como funciones avanzadas como transacciones. Dicho esto, está en desarrollo muy activo con un API cambiante. Si eres paciente y estás dispuesto a profundizar en el código, te recomiendo que lo pruebes. Cuando el polvo se asiente un poco, también planeo publicar sobre él.
Muchas gracias por su respuesta detallada. Estoy tratando de ver cuántos cambios necesito hacer para usar los datos de las brasas. Sigue pensando. –
Empecé a implementar su enfoque y parece que PUT o envíe la función de edit.js que llama al comentario.saveResource() aún falla debido a PUTing the json en la ruta "/ comments" en lugar de "/ conversation /: conversation_id/comments /: id" ¿Cómo crearía el duplicado como sugirió en su publicación de blog para su edición? –
No tengo en cuenta mi pregunta, yo mismo eliminé los "recursos: comentarios" y solo mantuve la configuración de recursos anidados en routes.rb –