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 回答