Как правильно добавить связанную запись

У меня есть коллекция комментариев и коллекция сообщений.

App.Router.map(function () {
  this.resource("posts", {
    path: "/posts"
  });
  this.resource("post", {
    path: "/:post_id"
  }, function () {
    this.resource("comments", {
      path: "/comments"
    });
  });
});
App.Post = Ember.Model.extend({
  id: attr(),
  name: attr(),
  comments: Ember.hasMany("App.Comment", {
    key: 'comments'
  })
  if embedded = comments: Ember.hasMany("App.Comment", {
    key: 'comments',
    embedded: true
  })
});
App.Post.url = "/posts";
App.Comment = Ember.Model.extend({
  id: attr(),
  message: attr(),
  post: Ember.belongsTo('App.Post', {
    key: 'post'
  })
});

Как я могу либо:

  1. Создайте новый встроенный комментарий.
  2. Создайте не встроенный комментарий и добавьте comment_id в comment_ids: [] на модели Post.

Я могу получить post_id чтобы войти в комментарии, если они не встроены, но я испытываю трудности с получением comment_id добавлено в пост.

3 ответа

Использовать create() метод.

// get a post instance to insert a new comment to.
var post = App.Post.create(); // or App.Post.find()

// insert a new comment.
var comment = post.get('comments').create();
comment.message = "Test Poster";

// since you are using embedded relationship,
// no need to save the comment, just save the post.
post.save();

Если вы используете не встроенный комментарий, измените свои отношения на { embedded: false }Просто не забудьте позвонить сохранить на ваш комментарий.

// if non-embedded
comment.save();

Надеюсь, поможет!

В случае, если это кому-нибудь поможет - я вставляю запрос на загрузку на ember-модель, которая исправляет проблему с запросом на загрузку на github

Ты должен push новый comment в comments Коллекция на post,

var post = this.get('post');
var comments = post.get('comments');
comments.pushObject(comment);
comment.save();
post.save();

Вот JSBin с общей идеей: http://jsbin.com/OnUXEti/12/edit

Другие вопросы по тегам