2012-02-03 51 views
3

我有一个表,我想一些其他的表,参考文件夹,到目前为止我的迁移脚本是这样的:是否可以干这个迁移?

create_table :folders do |t| 
    t.timestamps 
end 

.... 

change_table table1 do |t| 
    t.references :folders 
end 
change_table table2 do |t| 
    t.references :folders 
end 
change_table table3 do |t| 
    t.references :folders 
end 
change_table table4 do |t| 
    t.references :folders 
end 

因为我在做基本上是同样的事情到每个表中,是否有更简洁和可维护的方式来写这个?

感谢

回答

5

尝试这样做:

[table1, table2, table3, table4].each do |tbl| 
    change_table tbl { |t| t.references :folders } 
end 

我希望你不要用命名模式table{#n}表,让他们在你的实际代码:)

+0

是的,这些名称只是为了抽象的例子:) – Chris 2012-02-03 11:12:24

0

好名字,你可以请尝试这个。

(1..4).each do |num| 
     change_table "table#{num}" do |t| 
     t.references :folders 
     end 
    end 

希望它有帮助。

+0

你需要评估该字符串,否则它只是保持一个字符串;它不是指向表#对象的东西。 – omninonsense 2012-02-03 15:00:56

相关问题