class Sizes < ActiveRecord::Migration
def self.up
create_table :sizes do |t|
t.integer :size, :null => false
end
end
def self.down
drop_table :sizes
end
end
class Sizes < ActiveRecord::Migration
def self.up
Size.create(:id => 1, :size => 5)
Size.create(:id => 2, :size => 10)
end
def self.down
Size.delete_all
end
end
尝试使用命令rake db:migrate
填充数据库时,我得到了以下输出
select * from sizes;
id size
1 5
2 10
使用名为rake db:rollback
的命令从db回滚整个表之后。我再次重新填充数据库,现在它似乎是以下
select * from sizes;
id size
3 5
4 10
我不希望更改主键,如何停止指定自动增量功能或指定关联硬编码主键ID的功能,以使其保持不变。
答案 0 :(得分:0)
试试这个
create_table(:id => false) do |t|
t.integer :own_id, :options => 'PRIMARY KEY'
end
希望这有帮助
答案 1 :(得分:0)
rake db:rollback
会退后一步,在您的情况下会删除您创建的尺寸(1 =&gt; 5,2 =&gt; 10)
您可以再退一步,这将退出表格,然后再次运行迁移,重新创建表格和数据。
或者,如果您只想返回一步,那么您可以在self.down
方法中执行一些自定义SQL
def self.down
Size.delete_all
execute <<-SQL
ALTER TABLE Sizes AUTO_INCREMENT=0
SQL
end
您也可以尝试
create_table :sizes, :options => "auto_increment = 0" do |t|
...
end