Как правильно добавить связанную запись
У меня есть коллекция комментариев и коллекция сообщений.
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'
})
});
Как я могу либо:
- Создайте новый встроенный комментарий.
- Создайте не встроенный комментарий и добавьте
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