Re:Out Of Controller
by tptacek on Saturday October 22, 2011 @12:57PM
(#3143828)
"StoryAssigner"? Really?
[ Parent
| on HN ]
"Don't make objects that end with 'er'." [1] From a post previously seen on HN.
http://objology.blogspot.com/2011/09/one-of-best-bits-of-pro...
Re:Out Of Controller
by dan_manges on Saturday October 22, 2011 @03:22PM
(#3144140)
I like using service classes for things like this.
class StoryService
def self.assign_story(params)
story = Story.find(params[:story_id])
user = User.find(params[:user_id])
story.assign_to(user)
end
end
This example is fairly minimal, but with service classes handling workflow and object coordination instead of the controller, the code is easier to test and reuse.See, this strikes me as CS-driven code smell. Why not use an association between User and Story (maybe through :assignments) and just `user.stories.create(...)` or `user.assignments.create(:story => story)` ? No spurious class necessary.
Re:Out Of Controller
by dan_manges on Saturday October 22, 2011 @11:17PM
(#3145084)
That is probably how you would do it in this case, but in more complex scenarios, a simple association wouldn't be sufficient. In those cases, putting the code into a service instead of the controller will make the code easier to test and reuse.
What's an example that exceeds the functionality of associations?