2010-12-10 12 views
7

Varsayılan olarak id alanı oluşturulduğunu ve ayrıca PRIMARY KEY ( kimliğinin ) olduğunu anlıyorum.Ruby on Rails 3'te FOREIGN KEY kısıtlamasını ne oluşturur?

Yabancı anahtar nasıl? Ayrıca kastedilmektedir

t.integer "shop_id" 

yabancı anahtar olarak ve: Ben de var Product yılında

Shop: has_many :products 
Product: belongs_to :shop 

:

Ben Shops ve Products tablo ve aşağıdaki dernek var

add_index("products", "shop_id") 

Ancak, veritabanını dışa aktarırsam görüyorum ly:

KEY `index_products_on_shop_id` (`shop_id`) 

Ben

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

eklemek için ne yapmalıyım?

cevap

16

Uygulamanıza yabancı anahtar eklemek için foreigner taşını kullanabilirsiniz. Başlamak için bunu kolaylıkla gibi göç yabancı anahtarları ekleyebilir Bundan sonra senin Gemfile

gem "foreigner" 

aşağıdakileri ekleyin:

add_foreign_key :products, :shops 

Bu shop.id için product.shop_id gelen yabancı eklersiniz. Farklı adlandırılmış anahtarlar veya öz referans tabloları gibi daha fazla seçenek için belgelere bakın.