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