先占个位置,近来一直用migrate,准备写一个关于这个的总结。
收集资料先
[url=http://iamappleman.iteye.com]AppleMan的六篇总结[/url]
运行rake db:migrate的时候从fixture里加载
相当于手动的命令
实体完成性约束
增加一个字段并且添加一个值
添加索引
收集资料先
[url=http://iamappleman.iteye.com]AppleMan的六篇总结[/url]
运行rake db:migrate的时候从fixture里加载
相当于手动的命令
FIXTURES=config_params RAILS_ENV=production /usr/bin/rake db:YAML:restore
class InitConfig < ActiveRecord::Migration
def self.up
require 'rake'
rake = Rake::Application.new
ENV['FIXTURES'] = "config_params"
Rake::Task["db:YAML:restore"].invoke
end
def self.down
ConfigParam.delete_all()
end
end
实体完成性约束
class AddUniqueSiteProfile < ActiveRecord::Migration
def self.up
change_column("sites", "name", :string,:null => false )
change_column("profiles", "name", :string,:length =>50, :null => false)
add_index(:sites,[:name],:unique=>true)
add_index(:profiles,[:name],:unique=>true)
end
def self.down
change_column("sites","name",:string)
change_column("profiles","name", :string, :length => 50)
remove_index(:sites,:column=>:name)
remove_index(:profiles,:column=>:name)
end
end
增加一个字段并且添加一个值
class AddRegionIdToAnalyzer < ActiveRecord::Migration
def self.up
add_column :analyzers, :region_id, :integer,:default => 1
Analyzer.find(:all).each { |a|
a.region_id=1
a.save
}
end
def self.down
remove_column :analyzers, :region_id
end
end
添加索引
def self.up
add_index "measurements", ["site_id","measure_id","channel_id", "dt"],:name => "meas_idx"
add_column "measures", "graph_flag", :boolean, :default => true
end
def self.down
remove_index "measurements",:name => "meas_idx"
remove_column "measures", "graph_flag"
end