2011-04-26 73 views
0

迁移在删除表之前,我们是否真的需要删除外键?

def self.up 
    create_table :test_drafts do |t| 
     t.string :title, :limit => 255, :null => false 
     t.text :description 
     t.integer :user_id, :null => false 
     t.integer :test_id, :null => false 
     t.timestamps 
    end 

    add_foreign_key(:test_drafts,:user_id,:users,:cascade) 
    add_foreign_key(:test_drafts,:test_id,:tests,:cascade) 
    end 

    def self.down 
    drop_foreign_key(:test_drafts,:user_id) 
    drop_foreign_key(:test_drafts,:test_id) 
    drop_table(:test_drafts) 
    end 

我们真的需要删除外键之前下降的表? 我可以直接删除表而不丢弃外键吗?

回答

0

是的,这是编写迁移一个很好的做法。有几个数据库不允许在表中定义任何外键时删除表。

作为rails可以让您在各种数据库上工作,因此建议您考虑使用这些最佳实践。

0

它是依赖关系。首先,你应该删除独立的表,即使它们包含外键。