Магистраль принадлежит has_many

Давний разработчик Rails, Backbone Noob.

В моих моделях рельсов проект имеет много задач, и задача принадлежит проекту. Стандартные вещи.

Попытка получить json-задачи проекта в коллекции.

ExampleApp.Collections.Tasks = Backbone.Collection.extend({
  url: '/projects/<dynamic_id>/tasks',
  model: ExampleApp.Models.Task
});

Каждый пример, который я видел до сих пор, ссылается на URL-адрес как /tasks. Я хотел бы передать идентификатор проекта в коллекцию, чтобы получить задачи этого проекта.

Я проверил Backbone Relational, но не уверен, что это лучшее решение.

Ваше здоровье


person stuartchaney    schedule 14.09.2012    source источник


Ответы (2)


Я настоятельно рекомендую использовать Backbone-Relational, а не взламывать отношения самостоятельно. Причины использования Backbone-Relational из личного опыта:

  • Создает прямые и обратные отношения, поэтому вы можете получить все задачи, связанные с проектом, или проект, к которому принадлежит задача
  • Простота сериализации и автоматическая десериализация. То есть вы даете ему JSON, и он строит все модели и их отношения. Очень кстати.
  • Ваши модели остаются независимыми и могут использовать стандартный материал Backbone для сохранения/выборки без какой-либо дополнительной работы.
  • Он также прекрасно сочетается с различными расширениями Backbone, такими как Marionette и ioBind/ioSync.
person Tony Abou-Assaleh    schedule 15.09.2012

Один из подходов состоит в том, чтобы определить url как функцию и установить свой project_id перед вызовом fetch().

ExampleApp.Collections.Tasks = Backbone.Collection.extend({
    model: ExampleApp.Models.Task

    url: function() {
        return 'projects/'+this.project_id+'/tasks';
    },

    setProjectId(project_id) {
        this.project_id = project_id;
        this.fetch();
    }
});
person Peter Ludlow    schedule 14.09.2012