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

时间:2015-01-30 15:22:58

标签: ruby-on-rails-4 destroy rails-models rails-generate

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

# 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

我在网上对此有很多了解,但没有任何相关或最新的。所以任何建议都非常受欢迎。

感谢阅读。

1 个答案:

答案 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