2015-01-28 8 views
6

tanıtıldı. Anladığım kadarıyla, model:references ve add_index ile geçişin bir kombinasyonu olarak kullanılır.Rayları kullanmalıyım 4.2 Yabancı_klav ekle mi, eklensin mi? Rayların serbest bırakılması 4.2 <a href="http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_foreign_key" rel="nofollow">add_foreing_key</a> yöntemi ile

en Sadece PostreSQL kullandığınızı varsayalım. (add_foreing_key, MySQL ve PostreSQL ile sınırlıdır). add_index ile migration model:references kullanmayı bırakıp add_foreign_key sadece kullanmaya başlamak mı ?. Eğer evet/hayır ise, neden? Yeni add_foreign_key yönteminin yararları nelerdir? Takas etmeye değer mi?

+0

sadece' modeli birleştirmek sınırlı değil. Veritabanına yabancı anahtar kısıtlaması eklemekle ilgili. Ham sql veya ek taşlar (böyle bir öneri) olmadan önce böyle bir seçenek yoktu. – bronislav

+0

fakat etki (yani 2 modeli birbirine bağlayan) aynı, değil mi? (Veritabanları hakkında çok az bilgim var). Yabancı anahtar kısıtlaması, tamsayı sütunundaki kimliği ve dizini ile nasıl değişir? –

+0

'add_foreign_key' yöntemini kullanabilir veya kullanamazsınız. Ancak, geçiş yaparken "model: reference" veya "model_id: integer: index" parametrelerini kullanmalısınız. Bu olmadan iki modeli bağlayamazsınız. – bronislav

cevap

4

Yabancı anahtar kısıtlamaları (örneğin varolmayan bir kitaba ait veri eklemek olamaz) başvuru bütünlüğü ile yardımcı olabilir. Yabancı anahtarlar ayrıca, uygulama düzeyi (model doğrulama) bütünlüğünün aksine veritabanı seviyesi referans bütünlüğü sağlar.

Raylar ekibi

önemli yeterince Eğer göçler oluşturmaya başvurular her kullandığınızda onlar artık otomatik yabancı anahtarlar oluşturmak hissetti. reference` ve `add_index`: