js/libs/ember-data.js
function(type, data, _partial) {
    // _partial is an internal param used by `update`.
    // If passed, it means that the data should be
    // merged into the existing data, not replace it.

    Ember.assert("You must include an `id` in a hash passed to `push`", data.id != null);

    type = this.modelFor(type);

    // normalize relationship IDs into records
    data = normalizeRelationships(this, type, data);

    this._load(type, data, _partial);

    return this.recordForId(type, data.id);
  }
function(type, data, _partial) {
    // _partial is an internal param used by `update`.
    // If passed, it means that the data should be
    // merged into the existing data, not replace it.

    Ember.assert("You must include an `id` in a hash passed to `push`", data.id != null);

    type = this.modelFor(type);

    // normalize relationship IDs into records
    data = normalizeRelationships(this, type, data);

    this._load(type, data, _partial);

    return this.recordForId(type, data.id);
  }
Push some data for a given type into the store.

This method expects normalized data:

The ID is a key named `id` (an ID is mandatory)
The names of attributes are the ones you used in
your model's `DS.attr`s.
Your relationships must be:
represented as IDs or Arrays of IDs
represented as model instances
represented as URLs, under the `links` key

For this model:

```js
App.Person = DS.Model.extend({
firstName: DS.attr(),
lastName: DS.attr(),

children: DS.hasMany('person')
});
```

To represent the children as IDs:

```js
{
id: 1,
firstName: "Tom",
lastName: "Dale",
children: [1, 2, 3]
}
```

To represent the children relationship as a URL:

```js
{
id: 1,
firstName: "Tom",
lastName: "Dale",
links: {
children: "/people/1/children"
}
}
```

If you're streaming data or implementing an adapter,
make sure that you have converted the incoming data
into this form.

This method can be used both to push in brand new
records, as well as to update existing records.

@method push
@param {String or subclass of DS.Model} type
@param {Object} data
@returns {DS.Model} the record that was created or
updated.