Ember-Data beta 3 и сохранение связей hasMany и дополнительно одной записи с Rails

Я использую Rails 4, Ember 1.2.0 и Ember Data 1.0.0-beta.3 и DS.ActiveModelSerializer.

У меня возникли проблемы с сохранением новой записи с отношением "имеет много". Две записи модели должны быть созданы, но только одним запросом POST.

У меня есть 2 модели, которые выглядят так:

Lingohub.SupportCase = DS.Model.extend({
  subject: DS.attr('string'),
  status: DS.attr('string'),
  created_at: DS.attr('date'),

  supportCaseMessages: DS.hasMany('supportCaseMessage')
});

Lingohub.SupportCaseMessage = DS.Model.extend({
  supportCase: DS.belongsTo('supportCase'),
  text: DS.attr('string'),
  created_at: DS.attr('date')
});

Мой НОВЫЙ маршрут создает обращение в службу поддержки и массаж обращения в службу поддержки:

Lingohub.SupportCasesNewRoute = Ember.Route.extend({
  model: function() {
    var support_case = this.store.createRecord('supportCase');
    support_case.get('supportCaseMessages').createRecord();
    return support_case;
  }
});

Моя новая форма выглядит так: (я не знаю, можно ли проще связать дочерний атрибут?)

<form {{action 'create' this on="submit"}} id="new_support_case">

  {{input value=subject}}

  {{!-- {{supportCaseMessages.0.text}} --}}
  {{#each supportCaseMessages}}
    {{textarea value=text}}
  {{/each}}

  <input type="submit">

</form>

действие «создать» в контроллере:

Lingohub.SupportCasesNewController = Ember.ObjectController.extend({

  actions: {
    create: function(supportCase) {
      var message = supportCase.get('supportCaseMessages.content')[0];

      console.log(message.get('text'))

      supportCase.save();

    }
  }

});

Запрос POST к серверу отправляет только «обращение в службу поддержки»!

{"support_case"=>{"subject"=>"aaaaaa", "status"=>nil, "created_at"=>nil}}

Как я могу отправить дополнительную запись «сообщение о запросе в службу поддержки» и отношения?


person Betty St    schedule 04.12.2013    source источник


Ответы (1)


Я пытаюсь ответить на свой вопрос. Если я сделаю следующее, я получу «support_case_messages», встроенный в «support_case», действительно ли это лучший способ отправить «две модели» в одном запросе POST?

Lingohub.SupportCaseSerializer = DS.ActiveModelSerializer.extend({
  serializeHasMany: function(record, json, relationship) {
    var key, jsonKey;
    key = relationship.key;
    jsonKey = Ember.String.underscore(key);
    json[jsonKey] = [];

    record.get(key).forEach(function(item) {
      return json[jsonKey].push(item);
    });

    console.log(json)

    return json;
  }
});
person Betty St    schedule 04.12.2013