2013-01-08 13 views
5

モデルジェネレータをRails(レールgモデル)に拡張しようとしています。基本的に私の発電機はモデル1と同じことをするべきですが、2つの追加ファイルをコピーしてください。そのような単純な。Rails:ジェネレータを拡張する方法は?

非常に参考になったRailscast#218(http://railscasts.com/episodes/218-making-generators-in-rails-3)を確認しましたが、発電機の延長に関する情報が見つかりませんでした。

モデルジェネレータがRails :: Generators :: ModelGeneratorとして定義されたlib/rails/generators/rails/model/model_generator.rbにあるように見えます。

私は私の発電機はこのクラスを拡張作ってみましたが、それは、その結果:

Error: uninitialized constant Rails::Generators::ModelGenerator. 

そして、このファイルを必要とする私の試みは成功しませんでした。

私はここで停止して尋ねることにしました。ジェネレータを拡張する適切な方法は何ですか?

+0

このガイドはお使いになりましたか? http://edgeguides.rubyonrails.org/generators.html – MikDiet

+0

@Mik_Dieしかし、ジェネレータの拡張については何も言及していません。 generateメソッドについては言及していますが、それは私が望むものではありません。例:モデルジェネレータが受け入れるすべてのパラメータを受け入れる必要があります。 – Fernando

答えて

1

フックを見て呼び出します。

class MyGenerator < Rails::Generators::Base 
    def create_my_file 
    # Do your generators stuff 
    create_file "config/initializers/my.rb", "# Add content here" 
    # Create model 
    invoke("model", ["model_name", "arg1", "arg2"]) 
    end 
end 

このヘルプが必要です。

1
  1. カスタム・ジェネレータの生成:オープンlib/generators/my_model/my_model_generator.rb

    rails generate generator my_model 
    
  2. をし、それを変更します。これは、レールのエンジンのために働く

    require 'rails/generators/active_record/model/model_generator' 
    
    class MyModelGenerator < ActiveRecord::Generators::ModelGenerator 
        source_root File.expand_path('../templates', __FILE__) 
    end 
    

。必要なテンプレートを追加することを忘れないでください。

関連する問題