Rails表索引不是预期的数据库中的外键 - 为什么?

时间:2013-12-04 14:55:07

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

我为用户和出勤(用户,出勤)创建了表格,一切都很好。用户有很多出勤并且出勤属于用户。代码可以工作,Rails可以工作但是有一个大问题。

检查出勤表中的user_id字段,它不会列为外键。看看其他项目我注意到这种情况总是如此--Rails将这些标记为整数。

如果我只使用带有Rails的数据库,这一切都很好,但如果我需要在另一个程序中使用这个数据库(比如在后台运行的纯Ruby服务程序),那该怎么办呢。有没有办法让rails将这些标记为外键?这会破坏Rails吗?顺便说一句,它在MySQL中做同样的事情 - “外键”实际上只是整数而没有标记为。

我对user_id的迁移很简单:rails g migration add_user_id_to_attendances user_id:integer

编辑:我觉得这不是重复,因为它询问可能为了实际添加外键而可能发生的变化,而“复制”的问题主张只是“这是真的还是不是”对吗?“这个问题旨在征求问题的解决方案,而不是将其确定为事实。关闭此项将阻止我找到解决方案并拒绝其他用户回答。

1 个答案:

答案 0 :(得分:1)

您可以使用Foreigner gem。

  

Foreigner为您的迁移引入了一些方法来添加和删除外键约束。它还将外键转储到schema.rb。

add_foreign_key(from_table, to_table, options)
remove_foreign_key(from_table, options)