Rails 4 自定义生成器,撤销/调用



给定一个简单的自定义生成器:

# 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

相关内容

  • 没有找到相关文章

最新更新