5

我正在尝试在 Rails 中扩展模型生成器( rails g model )。基本上我的生成器应该和模型一做同样的事情,但是复制 2 个额外的文件。就那么简单。

我查看了 Railscast #218 ( http://railscasts.com/episodes/218-making-generators-in-rails-3 ),它提供了非常丰富的信息,但我找不到任何关于扩展生成器的信息。

查看 rails 的源代码,模型生成器似乎位于 lib/rails/generators/rails/model/model_generator.rb 中,定义为 Rails::Generators::ModelGenerator。

我试图让我的生成器扩展这个类,但它导致:

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

我要求这个文件的尝试没有成功。

所以我决定在这里停下来问问。扩展发电机的正确方法是什么?

4

2 回答 2

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

希望这有帮助。

于 2013-04-29T09:43:31.183 回答
1
  1. Generate your custom generator:

    rails generate generator my_model
    
  2. Open lib/generators/my_model/my_model_generator.rb and change it to:

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

This works for rails engines. Don't forget to add required templates.

于 2014-03-24T16:18:06.273 回答