I find stories are useful when they test the behaviour the user actually performs or observes - so rather than testing that the "failed login" template is rendered, test that the response contains "failed to log in". IMHO it's better if stories never refer to models, views or controllers directly, although sometimes it's hard to get the steps working without creating model instances manually.
As I see it, view, controller and model specs are only part of the picture. They speak the language of implementation ("controller action X should do Y to model Z"), and test that the individual parts of your app each do the right thing. Stories complete the picture by speaking the language of the user ("when I post a comment I should see the comment I posted") and testing that the parts fit together in a way that meets the customer's acceptance criteria.
I find a useful workflow is:
- write a story scenario describing the functionality I need to add.
- as soon as possible, write steps for that story, so that you can run it (even if all the steps fail).
- write a spec for something needed by that story (model may be a good place to start).
- write code to make that spec pass.
- write more specs and code until the story passes.
That way the story can guide you in what your specs need to test.
Edit: this is a good article which touches on the relationship between stories and specs.