Object saved into Service lost an attribute value


#1

I have a service current-shop.js which is defined s follows:

#services/current-shop.js

import Service from '@ember/service';

export default Service.extend({
  shop: null,

  setShop(shop) {
    this.set('shop', shop)
  }
});

The main purpose of this service is to always keep traces of the current shop (that could be changed by selecting another one from a drop-down list).

I set its shop value ony in two cases:

  • in the very beginning when logging the user:
this.get('currentShop').setShop(user.get('shop'));
  • when a user selects another shop from the drop-down list:
# components/shop-list.js

export default Component.extend({
  i18n: service(),
  currentShop: service(),
  shops: [],
  tagName: '',
  aShop: null,
  notFoundMessage: t('components.shop.list.messages.not.found'),

  actions: {
    chooseShop(shop) {
      this.set('aShop', shop);
      this.get('currentShop').setShop(shop);
    }
  }
});

The shop-list.hbs component looks like that:

# templates/components/shop-list.hbs

<label for="shop_select">{{t 'components.shop.list.labels.change.shop'}}</label>

{{#power-select
  selected=aShop
  options=shops
  searchField="name"
  noMatchesMessage=notFoundMessage
  onchange=(action "chooseShop")
  as |shop|
}}
  {{shop.shopName}}
{{/power-select}}

The problem I have is that I can display all the needed values coming from the current shop but the only one: modifiedBy.

I pass modified_by value from the backend to Ember. I have Shop model defined as follows in Ember:

# models/shop.js
export default DS.Model.extend({
..
  modifiedBy:    DS.attr('string'),
... //other attributes come here
  shopName: computed('identifier', 'name', function() {
    return `${this.get('identifier')}-${this.get('name')}`;
  })
});

The question how is it possible to have one attribute (or property) of an objet attached to a service disappeared ? Is there any way to trace it ? Thank you.


#2

I’m using active_model_serializers gem and I had to remove the following lines (advised by AMS docs) from Rails:

  • from initiallizer
# config/initializers/active_model_serializer.rb

ActiveModelSerializers.config.key_transform = :unaltered
  • from mime_types.rb:
# config/initializers/mime_types.rb

#Mime::Type.register "application/vnd.api+json", :json

Hope this helps


#3

To start tracing the problem, use Ember Inspector, go to the Data tab and find your Shop model. You will be able to see there if it has a modifiedBy field and what the value is.