给定一个简单的自定义生成器:
# 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
实际上,我的问题是这个生成器使用生成方法来使用现有的轨道生成器。但是我找不到任何方法来逆转这个生成的作用。
我曾经将其用于我自己的生成器(它不调用任何现有的生成器),并编写自己的"销毁"例程:
case self.behavior
when :invoke
# do that stuff
when :revoke
# undo it!
end
我在网上对此进行了大量报道,但没有相关或最新的内容。因此,任何建议都非常受欢迎。
感谢您的阅读。
您可以使用
以下代码段(当然,您可以将: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