Пользовательский генератор 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

На самом деле, моя проблема в том, что этот генератор использует метод generate, чтобы использовать существующий генератор rails. Но я не мог найти какой-либо способ обратить вспять то, что сделал этот генератор.

Я использовал это для своих собственных генераторов (которые не вызывают какой-либо существующий генератор) и писал свои собственные процедуры "уничтожения":

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

Я много пишу об этом в Интернете, но ничего актуального или актуального. Так что любые советы приветствуются.

Спасибо за прочтение.

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
Другие вопросы по тегам