I think there is a more Rails-y way to do this. Derek Prior gave an excellent talk[1] at the recent RailsConf. The TLDW is "all-REST all-the-time." Applying this principal to the example in the article, instead of adding a custom `movie_rating` action, you would create a `MovieRatingsController` with a `show` action.
Additionally, you might create an SJR[2] template which injects the rating directly into the page, possibly avoiding the need for a separate gem.
Nintendo still has to do that to some extent in order to get competitive performance on outdated hardware. They even managed to get Smash 4 running at 1080p60fps on the Wii U.
As such, it is actually "Bane's Rule" which states, "you don't understand a distributed computing problem until you can get it to fit on a single machine first."
(Thanks to nekopa, who also referenced it further down in this thread.)
I hadn't heard of fsql, but I did recently find q[1]. If anyone has experience with both, I'd be interested to hear if one does its job better than the other.
Also chiming in: same thing happened to me, but they sent my account to collections without notifying me first.
When I was on the phone with the collections agent, I was very polite and told her I knew she was just doing her job. I then got her to admit that this sort of thing happens all the time with AT&T, and that a lot of her phone calls go the same way.
Since then I've suspected that AT&T's practices go beyond mere incompetence and into abusive territory.