brandonhilkert
brandonhilkert

Reputation: 4475

Ember.js Model with embedded object

I'm going to query an API that return embedded objects in the response, so I'm simulating this with the fixture adapter. My data looks like this:

App.Deal.FIXTURES = [
      {id: 1, name: 'Deal 1', closed_time: '2012-04-01', value_in_cents: 342345, company: { id: 1, name: 'Google' }, user: { id: 2, full_name: 'Bob Smith' } },
      {id: 2, name: 'Deal 2', closed_time: '2012-04-01', value_in_cents: 342345, company: { id: 1, name: 'Google' }, user: { id: 2, full_name: 'Bob Smith' } }
]

Here's my models:

App.Deal = DS.Model.extend({
  name: DS.attr('string'),
  value_in_cents: DS.attr('number'),
  closed_time: DS.attr('date'),
  user: DS.belongsTo('App.User'),
  company: DS.belongsTo('App.Company')
});

App.User = DS.Model.extend({
  full_name: DS.attr('string')
});

App.Company = DS.Model.extend({
  name: DS.attr('string')
});

I'm unsure of how to get at the user and company objects. I see the data via console:

App.Deal.find(1)
Class {store: Class, clientId: 2, _relationshipChanges: Object, _changesToSync: Object, id: "1"…}
__ember1365792240874: "ember329"
__ember1365792240874_meta: Meta
_changesToSync: Object
_data: Object
attributes: Object
belongsTo: Object
company: Object
id: 1
name: "Google"
__proto__: Object

But I can't do App.Deal.find(1).get('user'). Am I missing something?

Upvotes: 0

Views: 1965

Answers (1)

brandonhilkert
brandonhilkert

Reputation: 4475

The following setup worked:

App.Adapter = DS.FixtureAdapter.extend();

App.Adapter.map('App.Deal', {
  user: {embedded: 'load'},
  company: {embedded: 'load'}
});

App.User = DS.Model.extend({
  full_name: DS.attr('string')
});

App.Company = DS.Model.extend({
  name: DS.attr('string')
});

App.Deal = DS.Model.extend({
  name: DS.attr('string'),
  value_in_cents: DS.attr('number'),
  closed_time: DS.attr('date'),
  user: DS.belongsTo(App.User, {embedded: 'load'}),
  company: DS.belongsTo(App.Company, {embedded: 'load'})
});

Upvotes: 3

Related Questions