Ruby on rails 如何覆盖Rails';默认迁移生成器模板

Ruby on rails 如何覆盖Rails';默认迁移生成器模板,ruby-on-rails,ruby-on-rails-3,activerecord,rails-generators,Ruby On Rails,Ruby On Rails 3,Activerecord,Rails Generators,我需要覆盖这些迁移模板: 及 在我的rails应用程序内部,这样他们就可以从rails应用程序而不是gem本身获取模板。到目前为止,我已经尝试了所有可能的组合,但没有成功 我所尝试的: - Rails.root/lib/templates/rails/migration/migration.rb - Rails.root/lib/templates/rails/migration_generator/migration.rb - Rails.root/lib/rails/templates/r

我需要覆盖这些迁移模板:

在我的rails应用程序内部,这样他们就可以从rails应用程序而不是gem本身获取模板。到目前为止,我已经尝试了所有可能的组合,但没有成功

我所尝试的:

- Rails.root/lib/templates/rails/migration/migration.rb
- Rails.root/lib/templates/rails/migration_generator/migration.rb
- Rails.root/lib/rails/templates/rails/migration/migration.rb
- Rails.root/lib/rails/templates/rails/migration_generator/migration.rb
- Rails.root/lib/rails/generators/templates/rails/migration/migration.rb
- Rails.root/lib/rails/generators/templates/rails/migration_generator/migration.rb
- Rails.root/lib/rails/templates/generators/rails/migration/migration.rb
- Rails.root/lib/rails/templates/generators/rails/migration_generator/migration.rb
- Rails.root/lib/rails/generators/active_record/migration/templates/migration.rb
- Rails.root/lib/rails/generators/active_record/migration_generator/templates/migration.rb
- Rails.root/lib/rails/generators/active_record/templates/migration.rb
- Rails.root/lib/rails/generators/active_record/templates/migration.rb

有人能给我指出正确的方向吗?

我想出了一个解决方案:

我用这个命令创建了一个Rails生成器(在我的Rails应用程序目录中)-

它创造了:

lib/generators/my_migrator/my_migrator.rb
lib/generators/my_migrator/templates
lib/generators/my_migrator/USAGE
然后,我将此代码添加到my_generator.rb中,以扩展生成器中的rails迁移生成器:

require 'rails/generators'
require 'rails/generators/active_record'
require 'rails/generators/actions/create_migration'

class MyGenerator < ActiveRecord::Generators::Base
  source_root File.expand_path('../templates', __FILE__)
  argument :attributes, :type => :array, :default => [], :banner => "field[:type][:index] field[:type][:index]"

  def create_migration_file
    set_local_assigns!
    validate_file_name!
    migration_template @migration_template, "db/migrate/#{file_name}.rb"
    # more code here as per requirement.
  end

  # more code below as per requirement..
end
要求“轨道/发电机”
需要“轨道/发电机/活动记录”
需要“rails/generators/actions/create_迁移”
类MyGenerator:数组,:default=>[],:banner=>“字段[:type][:index]字段[:type][:index]”
def创建_迁移_文件
设置\u本地\u分配!
验证文件名!
migration_template@migration_template,“db/migrate/#{file_name}.rb”
#根据需要在此处添加更多代码。
结束
#根据要求,更多代码如下。。
结束
把这个贴在这里,希望将来有一天能对别人有所帮助

require 'rails/generators'
require 'rails/generators/active_record'
require 'rails/generators/actions/create_migration'

class MyGenerator < ActiveRecord::Generators::Base
  source_root File.expand_path('../templates', __FILE__)
  argument :attributes, :type => :array, :default => [], :banner => "field[:type][:index] field[:type][:index]"

  def create_migration_file
    set_local_assigns!
    validate_file_name!
    migration_template @migration_template, "db/migrate/#{file_name}.rb"
    # more code here as per requirement.
  end

  # more code below as per requirement..
end