Как обновить отношения в ember-data

У меня есть следующие две модели:

App.Domain = DS.Model.extend({
    name: attr('string'),
    users: DS.hasMany('App.User')
});
App.User = DS.Model.extend({
    user: attr('string'),
    domain: DS.belongsTo('App.Domain')
});

Domain загружается во встроенную запись User:

DS.RESTAdapter.map('App.User', {
    domain: { embedded: 'load' }
});

Если я получу данные JSON, ember-data интерпретирует их правильно.

GET /users

{
    "users": [
        {
            "id": 1,
            "domain_id": 1,
            "user": "test",
            "domain": {
                "id": 1,
                "name": "example.com"
            }
        }
    ]
}

Мои домены выглядят так:

GET /domains

{
    "domains": [
        {
            "id": 1,
            "name": "example.com"
        },
        {
            "id": 2,
            "name": "example.org"
        }
    ]
}

Теперь мой вопрос:

Если я обновлю domain в записи user, domain_id ForeignKey не будет обновлен. Если я попытаюсь закоммитить эту грязную запись, ember отправит старую domain_id на сервер. Что не так в моем коде? Можно ли не обновлять поле belongsTo для обновления foreignKey таким образом?

>>var user = App.User.find(1);
>>user.get('domain.id')
1
>>var newDomain = App.Domain.find(2);
>>newDomain.get('id')
2
>>user.set('domain', newDomain)
>>user.get('isDirty')
true
>>user.get('domain.id')
2
>>user.get('domain_id')
1

person Timo    schedule 15.01.2013    source источник


Ответы (1)


Я думаю, вам нужно сначала зафиксировать, чтобы domain_id был обновлен.

person ken    schedule 24.01.2013