ember-model icon indicating copy to clipboard operation
ember-model copied to clipboard

Way to make belongsTo parent dirty if child is dirty

Open asquet opened this issue 10 years ago • 0 comments

It seems, in non-embeded belongsTo relations dirty child object cannot make parent object dirty. In most cases, such behavior is correct, but I think it would be good to have an option to make certain relations pass isDirty to parent record.

I've made a test (that fails as expected) to show a simple case, where passing isDirty could be usefull

test('Object gets dirty when belongsTo child object turns dirty', function() {
    expect(4);
    var Address = Ember.Model.extend({
        street: Em.attr()
    });
    Address.adapter = Ember.FixtureAdapter.create();
    Address.FIXTURES = [{id : 1, street: 'name'}];
    var Person = Ember.Model.extend({
        address : Ember.belongsTo(Address, {key:'addressId'})
    });
    Person.adapter = Ember.FixtureAdapter.create();
    Person.FIXTURES = [{id : 1, addressId : 1}];

    stop();
    Em.loadPromise(Em.run(Person, Person.find , 1)).then(function() {
        var person = Em.run(Person, Person.find , 1);
        var address = Em.run(person, person.get, 'address');
        ok(!person.get('isDirty'), 'parent object clean');
        ok(!address.get('isDirty'), 'child object clean');
        address.set('street', 'name1');
        ok(address.get('isDirty'), 'child object got dirty');
        ok(person.get('isDirty'), 'parent object got dirty');
        start();
    });

});

asquet avatar Aug 01 '14 14:08 asquet