Rails4 のやり方は、Concernsを使用することですが、それについてはいくつかの議論が行われています。それでも、私はこのアプローチが気に入っていますが、見つけた資料のほとんどはコントローラーよりもモデルに関するものです。
簡単な例
Rails 3 を使用している場合 (タグが示すように)、concerns
-folder をcontrollers
-folder に追加し、それを autoload-path に追加します。
#config/application.rb
config.autoload_paths += %W(#{config.root}/app/controllers/concerns)
たとえば、私はこのようなものを持っていますapp/controllers/concerns/can_can_sanitizer.rb
module CanCanSanitizer
extend ActiveSupport::Concern
included do
before_filter do
resource = controller_path.singularize.gsub('/', '_').to_sym
method = "#{resource}_params"
params[resource] &&= send(method) if respond_to?(method, true)
end
end
end
他のモジュールと同じように、これを application_controller に含めます。
include CanCanSanitizer
確かに、最適なユースケースではありませんが、有利なスタートが切れるはずです。