There's an echo in my head

日々のメモ。

scaffoldするときのコントローラのテンプレートをカスタマイズする

[小ネタ]RailsのScaffoldテンプレートを上書きするススメの勝手に追補的な記事。

コントローラのテンプレートはrailties/lib/rails/generators/rails/scaffold_controller/templates/controller.rbあたりから#{Rails.root}/lib/templates/rails/scaffold_controller/controller.rbにコピーしてくる。

このへんのどこからどこへコピーしてくるみたいなのはこのへんに書いてある(もしかしてRails Guideに公式のものがあるのかな?)。

以上。

ちなみにsaveとかupdateのコードはRails::Generators::ActiveModel経由で出力しているんだけど、そこにはsave!update!destroy!がない。これについては次のようなモンキーパッチを当てれば動く。config/application.rbからrequireするとか。

if Rails.const_defined?(:Generators)
  module Rails
    module Generators
      class ActiveModel
        def destroy!
          "#{name}.destroy!"
        end

        def save!
          "#{name}.save!"
        end

        def update!(params=nil)
          "#{name}.update!(#{params})"
        end
      end
    end
  end
end
このブログに出てくるコードスニペッツは、引用あるいは断りがない限りMITライセンスです。