The user clicks a button to upvote an Item. This should update @item.upvotes.

Where does this go? Here are the options I thought of. I'm not extremely familiar with the correct compartmentalization and I'm hoping to learn the reasoning behind this too.

1. Model -- as an instance method that updates immediately
2. Controller -- as a method that gets called using routing. If this is the case, why do we do this instead of making an instance method on the model?
3. Helper -- I'm not too familiar with what these do, but I know they can be called from the view. However, they seem to be better for things like string manipulation or working with stuff that belongs in the view.