Подтвердить что ты не робот

Backbone.js с Rails - обработка дублированной логики в моделях

У меня есть несколько лет разработки Rails и несколько дней опыта Backbone.js. После этих нескольких дней, я думаю, я вошел в аромат Backbone.js. Я задавался вопросом о том, какое дублирование проявляется в разработке клиентских скриптов Backbone.js с Rails на обратной стороне. Множество моделей частично переопределяется на стороне магистрали (структура модели и проверки).

Знаете ли вы инструмент, драгоценный камень, который будет обрабатывать это дублирование? Или вообще имеет смысл справиться с этим?

Извините за потенциальный спекулятивный вопрос. Мне интересно, пытался ли кто-нибудь решить вопрос о дублировании модели Rails/Backbone.

4b9b3361

Ответ 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 для уменьшения количества неудачных отправлений, вам просто придется жить с дублированием валидации.