When trying to push a newly created object to a parent in a has many relationship, I run in an error:
Assertion failed: The content property of DS.PromiseArray should be set before modifying it
Here is my code.
    App.User = DS.Model.extend({
        name : DS.attr('string'),
        selections : DS.hasMany('selection', {async: true}),
        creationDate : DS.attr('date')
    });
    App.Selection = DS.Model.extend({
        value : DS.attr('string')
    });
    App.PollController = Ember.ObjectController.extend({
        actions: {
            save: function(){
                // create new user record in store
                var newUser = this.store.createRecord('user', {
                    name : this.get('newUserName'),
                    creationDate : new Date()
                });
                // create new selection record in store
                var newSelection = this.store.createRecord('selection', {
                    id : 11,
                    value : "hallo"
                });
                // push selection to user
                newUser.get('selections').pushObject(newSelection);
                // save new user
                newUser.save();
            }
        }
    });
Error accourse when I am trying to push the newSelection object to selections Array of user model.
Also tried to change the line to
                // push selection to user
                newUser.get('selections').then(function(selections){
                    selections.pushObject(newSelection);
                });
Then I do not get an error but newSelection is not pushed to user. Selections array of user stays empty.
What I am doing wrong? Am I on totally wrong way? Or is there a bug in EmberJs / Ember Data?
I am using EmberJS 1.2.0 and Ember Data beta 5.
I assume you're saying the save isn't sending back the selections, cause your code for adding is correct.
It's important to note that promises happen asynchronously
            newUser.get('selections').then(function(selections){
                // this will happen after save
                selections.pushObject(newSelection);
            });
            newUser.save();
You should wait to save until the selection is pushed
http://emberjs.jsbin.com/gotasa/1/edit?html,js,output
            newUser.get('selections').then(function(selections){
                selections.pushObject(newSelection);
                newUser.save();
            });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With