如何正确添加相关记录

时间:2013-09-15 04:07:50

标签: ember.js ember-model

我有一系列评论和一系列帖子。

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 {/ 1}}。
  3. 如果非嵌入式,我可以让comment_ids: []进入评论,但是很难将post_id添加到帖子中。

3 个答案:

答案 0 :(得分:1)

使用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();

希望它有所帮助!

答案 1 :(得分:0)

您必须push将新comment comments收集到post上的var post = this.get('post'); var comments = post.get('comments'); comments.pushObject(comment); comment.save(); post.save(); 集合中。

{{1}}

这是一个总体思路的JSBin:http://jsbin.com/OnUXEti/12/edit

答案 2 :(得分:0)

如果这有助于任何人 - 我在ember模型上提出修复问题pull request diff on github

的拉取请求