我正在尝试在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.
我尝试要求此文件不成功。
所以我决定停下来问这里。扩展生成器的正确方法是什么?
答案 0 :(得分: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)
生成自定义生成器:
rails generate generator my_model
打开lib/generators/my_model/my_model_generator.rb
并将其更改为:
require 'rails/generators/active_record/model/model_generator'
class MyModelGenerator < ActiveRecord::Generators::ModelGenerator
source_root File.expand_path('../templates', __FILE__)
end
这适用于rails引擎。别忘了添加所需的模板。