【问题标题】:Rails 4 custom generator, revoke/invokeRails 4 自定义生成器,撤销/调用
【发布时间】:2015-03-30 02:45:37
【问题描述】:

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

# 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 生成器。但是我找不到任何方法来扭转这个生成所做的事情。

我曾经将它用于我自己的生成器(它不调用任何现有的生成器),并编写我自己的“销毁”例程:

  case self.behavior
    when :invoke
   # do that stuff
    when :revoke
   # undo it!
  end

我在整个网络上对此进行了很多宣传,但没有任何相关或最新的内容。因此,任何建议都非常受欢迎。

感谢阅读。

【问题讨论】:

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


    【解决方案1】:

    您可以使用以下代码(当然您可以将: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
    

    【讨论】:

    • 我在我的自定义生成器中测试了这个,在那里我生成了一个模型,这个模式有效。感谢您提供此解决方案。
    猜你喜欢
    • 2012-06-07
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 2011-11-18
    • 2022-01-13
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多