2010-12-10 66 views
7

据我所知,默认情况下,id字段已创建,还有:PRIMARY KEY ( id )什么在Ruby on Rails 3中创建FOREIGN KEY约束?

外键怎么样?

我有ShopsProducts表和以下关联:

Shop: has_many :products 
Product: belongs_to :shop 

Product我也有:

t.integer "shop_id" 

其目的是要为外键,也:

add_index("products", "shop_id") 

但是,如果我导出我看到的数据库LY:

KEY `index_products_on_shop_id` (`shop_id`) 

我应该怎么才能做补充

FOREIGN KEY (`shop_id`) REFERENCES Shop(`id`) 

回答

16

您可以使用foreigner gem将外键添加到您的应用程序。要开始添加以下到您的Gemfile

gem "foreigner" 

之后,你可以很容易地迁移添加外键,像这样:

add_foreign_key :products, :shops 

这从product.shop_id添加一个陌生shop.id。请参阅文档以获取更多选项,如不同名称的键或自引用表。