当我使用此代码时
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
我不知道我需要在invoke方法中传递哪些参数。
答案 0 :(得分: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