什么在Ruby on Rails 3中创建了FOREIGN KEY约束?

Mis*_*hko 7 ruby-on-rails foreign-keys ruby-on-rails-3

据我所知,默认情况下id会创建字段,还会创建:PRIMARY KEY (id ).

外键怎么样?

我有ShopsProducts表和以下关联:

Shop:    has_many :products
Product: belongs_to :shop
Run Code Online (Sandbox Code Playgroud)

Product我也有:

t.integer "shop_id"
Run Code Online (Sandbox Code Playgroud)

这意味着是外键,还有:

add_index("products", "shop_id")
Run Code Online (Sandbox Code Playgroud)

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

KEY `index_products_on_shop_id` (`shop_id`)
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能添加

FOREIGN KEY (`shop_id`) REFERENCES Shop(`id`)
Run Code Online (Sandbox Code Playgroud)

Wol*_*ang 16

您可以使用外国人 gem来为您的应用程序添加外键.要开始,请将以下内容添加到您的Gemfile

gem "foreigner"
Run Code Online (Sandbox Code Playgroud)

之后,您可以轻松地在迁移中添加外键,如下所示:

add_foreign_key :products, :shops
Run Code Online (Sandbox Code Playgroud)

这将增加从外国product.shop_idshop.id.有关更多选项(如不同命名的键或自引用表),请参阅文档.