component/model — pull request #50 by ianstormtaylor (2013-07-24 23:38:38+00:00)
Title: added Model.primary(name) to set the key

I've been wanting to have a nicer way to set the `primary` key for a model. Instead of having to break the nice chainable API to do:

```js
var Model = model('post')
.attr('id')
.attr('slug')
.attr('title')
.attr('body');

Model.primaryKey = 'slug';
```

Instead, we can add a chainable method to set the `primaryKey`. Note that I removed the `model[attr].primaryKey = true` piece of code because it seemed unnecessary and wasn't being used anywhere, so I figured it was a bit of feature creep for now.

Now setting a `primaryKey` would look like:

```js
var Model = model('post')
.attr('id')
.attr('slug')
.attr('title')
.attr('body')
.primary('slug');
```

But then I realized that there might even be a better way using the extra `options` we can tie to a specific property, which would look like this:

```js
var Model = model('post')
.attr('id')
.attr('slug', { primary: true })
.attr('title')
.attr('body');
```

That last option seems the cleanest to me, and it builds on the existing API. (Note: that's **not** what's in the PR, so let me know if you like that one better and I'll submit another with it.)