ember-model
ember-model copied to clipboard
Way to make belongsTo parent dirty if child is dirty
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();
});
});