支持Rails中的外键约束
在Ruby on Rails中,如何在迁移中添加外键约束?
AFAIK,没有任何内置支持,但有几个插件可以帮助您。 您也可以手动将它们添加到迁移文件中,只需使用execute方法,例如(来自Rails API的示例):
class MakeJoinUnique < ActiveRecord::Migration def self.up execute "ALTER TABLE `pages_linked_pages` ADD UNIQUE `page_id_linked_page_id` (`page_id`,`linked_page_id`)" end def self.down execute "ALTER TABLE `pages_linked_pages` DROP INDEX `page_id_linked_page_id`" end end
这是一个基于gem的解决方案,包括对添加和删除外键约束的支持,使用sqlite不会失败,并且可以与schema.rb文件一起正常工作:
这是对matthuhiggins-foreignigner gem的更新: http ://github.com/sparkfly/foreigner
特征:
- rspec覆盖率,针对PostgreSQL 8.3.9和MySQL 5.0.90进行了测试
- 迁移支持
- schema.rb支持
未来的版本将包括PostgreSQL的CHECK约束,这是实现多表inheritance所必需的。
添加以下内容是否足够,例如Products
和User
模型?
add_index :products, :user_id