Setting boolean field not persisting in record


#1

I have the following code:

var id = model.get('id');
        this.store.find('listingEvent', id)
          .then(function(le){
            var toggle = !le.get('currentUserAttending');
            le.set('currentUserAttending', toggle);
            le.save();
          });

No matter what toggle ends up being false is always persisted to the server. Even if I hard code it as true!

Here is my model:

import DS from 'ember-data';

export default DS.Model.extend({
  	slug: DS.attr('string'),
  	name:DS.attr('string'),
  	start:DS.attr('string'),
  	end:DS.attr('string'),
  	currentUserAttending: DS.attr('boolean'),
	eventInstanceSlug:DS.attr('string'),
  	location: DS.belongsTo('location'),
  	artists: DS.hasMany('artist', {async:true}),
  	usersAttending: DS.hasMany('userAccount', {async:true})
});

Can anyone shed some light on this because I am genuinely perplexed!


#2

Anyone? Surely I am missing something obvious?


#3

Basically based on what the docs say - this should work - so I am assuming it is a bug in ember data - a pretty fundamental one at that as this is probably one of the most basic use cases!


#4

FWIW:

DEBUG: Ember      : 1.7.0 vendor.js:27630
DEBUG: Ember Data : 1.0.0-beta.10 vendor.js:27630
DEBUG: Handlebars : 1.3.0 vendor.js:27630
DEBUG: jQuery     : 1.11.1

#5

Gotten a little bit further with this

If I don’t call .save the record correctly reflects the changes. Calling .save sends the old state to the server which responds with the old state and thus resets the copy in ember-data store.

calling.save should send the updated record surely?


#6

Am I seriously the only person getting this?!?!


#7

Try to reproduce it in a emberjs.jsbin.com with the same versions of the libs that you are using. This might be an issue with how your backend returns the data upon save.


#8

It’s not that. Ember is sending the original record not the updated one.


#9

There have been several issues with Ember-Data and Ember, I think 10 and 11 have to be used with ember 1.8.x


#10

Aha, ok, I will try this in the am then. Thank you, I’ll let you know how I get on.


#11

This didn’t work I am afraid - I am trying to get a JSBin together but can’t get anything to work there either!


#12

Is your server providing the correct response? If your server always return true or false for the Boolean flag, after the response came back, it will automatically overwrite the flag. I’ve gotten burned by this a few times.


#13

This was actually my balls up.

The reason I thought it was sending the wrong data to the server was because in the preview pane in Chrome it shows something else - but not the data that is being sent. That completely screwed me up. Once I had figured that out I realised it was sending the correct data and because the data coming back from the server wasn’t formatted correctly it was being rejected by ember and reverted…

PHEW!!!