0

このコードを使用したとき

Rails::Generators.invoke("active_record:migration","create_tests",{:behavior=>:invoke, :destination_root=>Rails.root})

移行ファイルを生成するために、次のクラスを生成しました。

class CreateTests < ActiveRecord::Migration
  def up
  end

  def down
  end
end

しかし、私が欲しいのはこれです:

class CreateTests < ActiveRecord::Migration
  def change
    create_table :tests do |t|

      t.timestamps
    end
  end
end

呼び出しメソッド内で渡す必要があるパラメーターを認識していません。

4

1 に答える 1

0

テンプレート ファイルを作成し、それを生成目的で使用できます。

    class CoolMessageGenerator < Rails::Generators::Base
      source_root File.expand_path('../templates', __FILE__)
      argument :model_name, :type => :string, :default => 'CoolMessage'

      def migration
        template 'cool_migration.rb',
                 File.join('db', 'migrate', "#{Time.now.to_i}_create_#{model_name.tableize}.rb")
      end
    end

および同じディレクトリにある templates/cool_migration.rb:

class Create<%= model_name.pluralize %> < ActiveRecord::Migration
  def change
    create_table :<%= model_name.tableize %> do |t|
      t.timestamps
    end
  end
end 
于 2013-02-20T13:33:14.487 に答える