Dmitro
Dmitro

Reputation: 1549

How to update model joined with belongsTo?

I have a Consultation model

export default DS.Model.extend({
   records: DS.hasMany('record', { async: true }),
   currentUser: DS.belongsTo('user'),
   remoteUser: DS.belongsTo('user'),
   created_time: DS.attr('number'),
   freeMsgCount: function () {
      return (this.get('remoteUser.msg_block')-this.get('user_msg_cnt'));
   }.property('user_msg_cnt'),
   .....
});

And User model

export default DS.Model.extend({
    name: DS.attr('string'),
    .....
});

And I try to update User model. I get json data via WebSocket

socket.on('message', function (jsonObj) {
    if (jsonObj.action && jsonObj.action == 'userReload') {
         self.store.push('user',jsonObj.userData );
         return;
    }
}

But Consultation model doesn't know about this update, because I have property freeMsgCount in Consultation model which is using data from User model this.get('remoteUser.msg_block'). User data was updated I saw it in Ember inspector. How can I tell Consultation model to update relation remoteUser?

Upvotes: 0

Views: 86

Answers (1)

Daniel
Daniel

Reputation: 18682

It seems that you're not watching remoteUser changes in your computed property, so it won't be triggered if remoteUser property's changed. Please add remoteUser.msg_block to computed property declaration:

export default DS.Model.extend({
   # ...
   freeMsgCount: function () {
      return (this.get('remoteUser.msg_block')-this.get('user_msg_cnt'));
   }.property('user_msg_cnt', 'remoteUser.msg_block'),

Upvotes: 1

Related Questions