Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

rails 3 - code shared between multiple controllers - where to put it?

I have a piece of code that is needed in 2 of my controllers, but not all of them. Where does this method belong? I have read about helpers, but those seem to be for view-related code. Someone proposed the lib-folder, but that seems 'too far away' from the controller logic, i don't need it in views or models. Has someone experience with that sort of problem?

like image 895
user573335 Avatar asked Aug 14 '11 11:08

user573335


1 Answers

There are three options, the easiest (though, the most unclean) is the application controller. The other two options are a shared parent controller

class FooController < FooBarParentController
   # code here  
end

class BarController < FooBarParentController
   # code here  
end

Usage depends on how related these controllers are.

The final solution is a module

module FooBarModule
  extend ActiveSupport::Concern

  included do
    # class level code
    # before_filter ....
  end

  module ClassMethods
    # all class methods here
  end

  # instance methods here
end

This is where the shared code required is for a handful of ad-hoc controllers, or if you are already using the inheritance above and this code doesn't quite fit into this subset (thus attempting to emulate multiple inheritance).

like image 156
Omar Qureshi Avatar answered Sep 23 '22 19:09

Omar Qureshi