I don't think it's the responsibility of the controller to index the need, in the same way that it's not the controller's job to insert the need into the database. The controller's job should be to invoke the correct methods on a Need in order to save it, and everything that happens after that (eg indexing) should be a concern for the model.

I don't see why the model shouldn't take care of persistence in all its forms. If it doesn't, then implementing something that creates a Need becomes substantially more complex. For example, if we wrote a Rake task which imported some needs, we would also have to duplicate the code to index the need from the controller into our task (we certainly don't want to have needs in the database which aren't in the index).

We could still handle save failures and indexing failures differently too. If indexing is a model concern, then we could still return `true` on save if the index fails, and raise the exception email from the model instead.