8

私は現在、すでに大きくなっているコントローラーを持っています。コントローラーをスリム化する最善の方法は何かと考えていました。私は必ずしも最も簡単な方法を探しているわけではありませんが、安全で効率的な方法を探しています。私はここしばらく Rails を使って開発を行ってきましたが、「サブクラス化」がどのように機能するかについてはまだよくわかっていません。ひょっとして、こんなものかな?と思いました。

class SomeController < ApplicationController
end

class MoreFunctionsController < SomeController
end

それは現在テストされていません - 私はまだそれに取り組んでいます - しかし、これが私が行こうとしている方向のアイデアをあなたに与えることを願っています. また、このルーティングがどのように見えるかはわかりません。大きなコントローラを「分割」する最良の方法は何ですか?

4

1 に答える 1

10

ActiveSupport::Concern (ドキュメンテーション)はあなたが探しているものです。

アップデート

このようなもの:

# config/application.rb
config.autoload_paths += %W(#{Rails.root}/app/controllers/concerns) # in Rails4 this is automatic

# app/controllers/my_controller.rb
class  MyController < ApplicationController
  include GeneralStuffConcern

  def index
    render text: foo
  end
end

# app/controllers/concerns/general_stuff_concern.rb
module GeneralStuffConcern
  extend ActiveSupport::Concern

  def show
    redirect_to root_path
  end

protected
  def foo
    'fooo'
  end
end

更新 2

私は実際にこれをもっとお勧めしますhttp://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/

于 2013-09-11T15:16:41.500 に答える