在Ruby on Rails中,如何在迁移中添加外键约束?支持Rails中的外键约束
回答
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
这里有一个基于GEM的解决方案,包括用于添加和删除外键约束的支持,不会失败使用SQLite,并与schema.rb文件正常工作:
仅供参考,因为SQLite不支持外键,所以`foreigner`在使用SQLite时不会在`schema.rb`中生成外键。 – ashes999 2015-02-06 23:08:04
这是一个更新到matthuhiggins外国人的宝石:http://github.com/sparkfly/foreigner
特点:
- rspec的覆盖面,对PostgreSQL的8.3.9和MySQL测试5.0.90
- 迁移支持
- schema.rb支持
未来版本将包括PostgreSQL的,这是实现多需要CHECK约束表继承。
谢谢。外国人的宝石不适合改变方法,特别是如果表格以前没有创建过。这很好用 – Sean 2012-02-08 02:06:01
您的欢迎。让我知道(通过github)如果你发现任何错误。 – 2012-02-08 15:38:55
添加以下内容就足够了,例如使用Products
和User
型号吗?
add_index :products, :user_id
- 1. SQLite3不支持外键约束吗?
- 2. Rails 3外键约束
- 3. 的Rails +的Heroku:外键约束失败
- 4. 外键约束
- 5. 外键约束
- 6. 外键约束
- 7. Rails的:添加外键约束
- 8. 外键:与外键约束
- 9. Oracle中的外键约束
- 10. Derby中的外键约束
- 11. Heroku是否支持外键和唯一约束?
- 12. JPA:与坚持外键约束
- 13. Rails 4关系和Postgres外键约束
- 14. CakePHP&外键约束
- 15. SQL约束:外键
- 16. MySQL外键约束
- 17. 与外键约束
- 18. 与外键约束
- 19. 从外键约束
- 20. 外键约束 - Pentaho
- 21. SqlAlchemy外键约束
- 22. mysql外键约束
- 23. Netezza外键约束
- 24. 外键约束5
- 25. 外键约束SQL
- 26. SQLite外键约束
- 27. Sql外键约束
- 28. 可空的外键约束
- 29. InnoDB的外键约束
- 30. 外键约束的大小
旧职,但万一有人看到这一点:唯一索引是不等同于一个外键约束,所以我相信这个代码不回答OP的问题。 – dsetton 2011-06-20 20:26:00