There are always serious conceptual challenges with building a large system, especially when you want to keep the responsibilities of each component clear and with as few side-effects as possible.
There’s one controller action in the not-so-stealth-anymore project (GiftLasso) I’m working on that begins multiple workflows. Naturally, we’ve been using Bruce Williams’ wonderful in_context plugin for most of these issues. The main point of this action is to create (or find) a model — I’ll call it model A — that needs to be present for the subsequent action. Once this first model is created, we redirect to the new action of the next controller so that the user can input some information and then create the associated model (Model B). Our application is CRUD-focused but doesn’t use REST as of yet. In the future, I’d prefer to create model A as we’re creating model B, but the separation works well for now and is conceptually cleaner.
That pattern worked very nicely and cleanly until we wanted to add a little Ajax in the mix.