在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. 外键约束
- 4. 外键约束
- 5. 外键约束
- 6. Rails的:添加外键约束
- 7. Derby中的外键约束
- 8. Oracle中的外键约束
- 9. JPA:与坚持外键约束
- 10. 从外键约束
- 11. 外键约束 - Pentaho
- 12. SqlAlchemy外键约束
- 13. 与外键约束
- 14. SQLite外键约束
- 15. mysql外键约束
- 16. 外键约束SQL
- 17. 无约束的外键?
- 18. InnoDB的外键约束
- 19. 在表中添加外键约束vs添加外键约束的变更表
- 20. 添加外键外键约束表
- 21. SQLite3中的外键支持
- 22. 添加外键约束
- 23. 外键约束(复杂?)
- 24. 数据库外键约束
- 25. MySql外键约束问题
- 26. 外键约束问题
- 27. 外键约束失败
- 28. 流利Nhibernate外键约束
- 29. 外键约束在Oracle
- 30. MERGE冲突外键约束
旧职,但万一有人看到这一点:唯一索引是不等同于一个外键约束,所以我相信这个代码不回答OP的问题。 – dsetton 2011-06-20 20:26:00