Как сделать собственный генератор, который также генерирует миграцию в Rails - PullRequest
0 голосов
/ 08 ноября 2018

Здесь у меня есть собственный генератор, который я делаю. Мне также нужен мой пользовательский генератор для генерации миграции с некоторыми предварительно заполненными значениями (например, шаблон миграции)

Вот мой файл генератора:

class BlockGenerator < Rails::Generators::Base
  source_root File.expand_path('templates', __dir__)
  argument :model, type: :string

  def generate_model
    generate_block_model
  end

  private
  def generate_block_model
    template 'block_model_controller_template.template', "app/controllers/garcia_cms/#{model.pluralize.underscore}_controller.rb"
    template 'block_model_template.template', "app/models/#{model.singularize.underscore}.rb"
  end
end

Я знаю, что мне нужно добавить эту строку, чтобы использовать шаблон миграции.

migration_template "migration.rb", "db/migrate/add_foo_to_bar.rb"

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

undefined method `migration_template' for #<BlockGenerator:0x00007f830cd155b0> (NoMethodError)

Есть идеи?

1 Ответ

0 голосов
/ 08 ноября 2018

Вы должны включить модуль Rails :: Generators :: Migration :

class BlockGenerator < Rails::Generators::Base
  include Rails::Generators::Migration
  source_root File.expand_path('templates', __dir__)
  argument :model, type: :string

  def generate_model
    generate_block_model
  end

  private
  def generate_block_model
    template 'block_model_controller_template.template', "app/controllers/garcia_cms/#{model.pluralize.underscore}_controller.rb"
    template 'block_model_template.template', "app/models/#{model.singularize.underscore}.rb"
    migration_template "migration.rb", "db/migrate/add_foo_to_bar.rb"
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...