给出一个简单的自定义生成器:
# lib/generators/custom_model/custom_model_generator.rb
class CustomModelGenerator < Rails::Generators::NamedBase
def rails_generate_model
generate 'model', "#{file_name} #{args.join(' ')}"
end
end
使用方法如下:
$ rails generate custom_model ModelName
如何定义此自定义生成器的销毁行为?
$ rails destroy custom_model ModelName
实际上,我的问题是这个生成器使用generate方法来使用现有的rails生成器。但我无法找到任何方法来扭转这种生成方式。
我曾经将它用于我自己的生成器(它不会调用任何现有的生成器),并编写我自己的&#34; destroy&#34;例程:
case self.behavior
when :invoke
# do that stuff
when :revoke
# undo it!
end
我在网上对此有很多了解,但没有任何相关或最新的。所以任何建议都非常受欢迎。
感谢阅读。
答案 0 :(得分:0)
您可以使用以下代码(当然,您可以将:scaffold
替换为任何其他生成器):
case self.behavior
when :invoke
generate :scaffold, "#{file_name} #{attributes}"
# Or equally:
# Rails::Generators.invoke :scaffold, args, :behavior => :invoke
when :revoke
Rails::Generators.invoke :scaffold, [file_name], :behavior => :revoke
end