Ответ 1
Вам не нужно создавать дублируемую модельную архитектуру для Backbone, хотя это, как правило, самый простой способ. (Есть js-расширения для основы, которые добавляют has_many и еще много чего, если вы идете по этому маршруту: https://github.com/dbrady/ligament.js и https://github.com/PaulUithol/Backbone-relational)
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Не делайте следующего, это отстой.
Но вы можете передать любой JSON на основу, которая вам нравится, и назовите ее "моделью" и создайте отдельный контроллер, чтобы обрабатывать все, что вы там вложили. Это может быть гораздо более грязным, но более сжатым, если вы хотите отправить глобус JSON на основу и сохранить его в одной модели.
Пример:
# controller
def index
@json = User.first.to_json(:include => {:address => {}, :contacts => {})
end
Отправьте этот JSON на базовую основу, и у вас есть объект с вложенными отношениями, хотя он практически бессмыслен для Backbone, но никак не поддерживает отношения, поэтому вам нужно будет извлечь биты, которые вы хотите обработать в JavaScript, поместить их назад и сделайте ваши действия по созданию/обновлению в Rails весьма привлекательными для обработки этого...
Но дело в том, что вы произвольно можете создать любой тип объекта JSON, который вам нужен, потому что Backbone ничего не знает о том, что Rails сделает с ним. Магистраль просто получает URL-адрес для управления своими HTTP-запросами и полагает, что сервер настроен на то, чтобы обрабатывать все, что он на него набрасывает. Таким образом, не стесняйтесь отправлять и получать именно те объекты JSON, которые вы хотите - просто имейте в виду, что вам нужно будет разобраться, как с ними работать в Rails, если они пересекают модели.
На самом деле, это намного чище, просто чтобы выровнять его и дублировать много архитектуры модели в Backbone, к сожалению.
Я думаю, что самой волшебной чертой Backbone, которую я видел до сих пор, являются библиотеки js-association-making, перечисленные выше. Магистраль остается довольно неуклюжей.
Существует жемчужина, называемая "backbone-rails" или "рельс-позвоночник" (был странный конфликт проекта, который сделал его туманным) с помощью "codebrew" https://github.com/codebrew/backbone-rails, который сгенерирует вам хороший кофейник. Это, наверное, самый простой способ, но не такой сжатый, как вам может быть, поскольку это генератор кода.
Если кто-нибудь может осветить больше об этом или полностью опровергнуть меня, сделайте это! Я тоже нахожусь в середине моих знаний о магистралях.
P.S. Возможно, вы не захотите полагаться на Backbone для проверки...:) Легко взломать. Если вы добавляете их в JS для уменьшения количества неудачных отправлений, вам просто придется жить с дублированием валидации.