No es necesario crear una arquitectura de modelo duplicada para Backbone, aunque esa suele ser la forma más sencilla de hacerlo. (Hay js ampliaciones de red troncal que añaden has_many y todo eso, si vas por ese camino: https://github.com/dbrady/ligament.js y https://github.com/PaulUithol/Backbone-relational)
AVISO: No hacer lo siguiente, que es una mierda.
Pero puede pasar cualquier JSON a la red troncal que desee, y llamarlo un "modelo", y hacer un controlador por separado para gestionar el guardado de lo que haya puesto ahí. Eso puede ser mucho más desordenado, pero más sucinto si quieres enviar un glob de JSON a la red troncal y mantenerlo en un modelo.
Ejemplo:
# controller
def index
@json = User.first.to_json(:include => {:address => {}, :contacts => {})
end
Enviar que JSON para la columna vertebral, y usted tiene un objeto con relaciones anidadas, aunque es prácticamente de sentido a la espina dorsal sin alguna forma de mantener las relaciones, por lo que tendría para extraer los bits quieres tratar con JavaScript, volver a armarlos y hacer que tus acciones de creación/actualización en Rails sean lo suficientemente sofisticadas para manejar eso ...
Pero el punto es que puedes crear arbitrariamente cualquier tipo de objeto JSON que quieras - porque Backbone no sabe nada de lo que Rails hará con él. Backbone solo obtiene una URL para administrar sus solicitudes HTTP, y confía en que el servidor está configurado para manejar lo que sea que le ofrezca. Por lo tanto, siéntase libre de enviar y recibir exactamente el tipo de objetos JSON que desee, solo tenga en cuenta que tendrá que descubrir cómo lidiar con ellos en Rails si cruzan los modelos.
Realmente, es mucho más limpio solo para resistir y duplicar gran parte de la arquitectura del modelo en Backbone, desafortunadamente.
Creo que la cosa Backbone más mágica que he visto hasta ahora son las bibliotecas js-association-making mencionadas anteriormente. La columna vertebral sigue siendo bastante torpe.
Hay una gema llamada 'backbone-rails' o 'rails-backbone' (hubo un conflicto de proyecto extraño que la hizo nebulosa) por "codebrew" https://github.com/codebrew/backbone-rails, que generará un buen coffeescript para que usted pueda trabajar. Probablemente sea la forma más fácil de hacerlo, pero no tan breve como te gustaría, ya que es un generador de código.
Si alguien puede aclarar más sobre esto, o refutarme por completo, ¡por favor hazlo! Estoy en medio de mi conocimiento Backbone también.
P.S. Es posible que no desee confiar en Backbone para hacer validaciones ...:) Fácilmente pirateable. Si los está agregando en JS para reducir el número de envíos incorrectos, entonces tendrá que vivir duplicando las validaciones.
Estaba buscando esto, el otro día también, y estoy esperando el libro electrónico ThoughtBot http://workshops.thoughtbot.com/backbone-js-on-rails que tendrá una sección llamada: 'Cliente/Servidor duplicado lógica de negocio 'sin embargo todavía no se ha iniciado. – sren
@SimonRentzke ¡Gracias por el consejo! Voy a estar pendiente de este ebook. – fifigyuri