Вообще данный код представялет собой некоторую сложную логику. Его необходимо вынести в отдельный класс.
http://blog.carbonfive.com/2012/01/10/does-my-rails-app-need-a-service-layer/
http://rubysource.com/ddd-for-rails-developers-part-1-layered-architecture/