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 i开发者_Go百科n views or models. Has someone experience with that sort of problem?
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).
精彩评论