Where do I put a single filter that filters methods in two controllers in Rails

StackOverflow https://stackoverflow.com/questions/20864105

  •  23-09-2022
  •  | 
  •  

Domanda

I have a single method I want to use as a filter in two controllers. Is there a central location I can place it or must I duplicate the code in both controllers?

È stato utile?

Soluzione

Two ways.

i. You can put it in ApplicationController and add the filters in the controller

    class ApplicationController < ActionController::Base
      def filter_method
      end
    end

    class FirstController < ApplicationController
      before_filter :filter_method
    end

    class SecondController < ApplicationController
      before_filter :filter_method
    end

But the problem here is that this method will be added to all the controllers since all of them extend from application controller

ii. Create a parent controller and define it there

 class ParentController < ApplicationController
  def filter_method
  end
 end

class FirstController < ParentController
  before_filter :filter_method
end

class SecondController < ParentController
  before_filter :filter_method
end

I have named it as parent controller but you can come up with a name that fits your situation properly.

You can also define the filter method in a module and include it in the controllers where you need the filter

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top