支持Rails中的外键约束

时间:2008-11-26 10:00:49

标签: mysql ruby-on-rails foreign-keys

在Ruby on Rails中,如何在迁移中添加外键约束?

4 个答案:

答案 0 :(得分:14)

这是一个基于gem的解决方案,包括对添加和删除外键约束的支持,使用sqlite不会失败,并且可以与schema.rb文件一起正常工作:

http://github.com/matthuhiggins/foreigner

答案 1 :(得分:4)

这是对matthuhiggins-foreignigner gem的更新:http://github.com/sparkfly/foreigner

特点:

  • rspec覆盖率,针对PostgreSQL 8.3.9和MySQL 5.0.90
  • 进行了测试
  • 迁移支持
  • schema.rb支持

未来版本将包含PostgreSQL的CHECK约束,这是实现多表继承所必需的。

答案 2 :(得分:2)

AFAIK,没有任何内置支持,但有several plugins可以帮助您。您也可以手动将它们添加到迁移文件中,只需使用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

答案 3 :(得分:0)

添加以下内容是否足够,例如ProductsUser模型?

add_index :products, :user_id