2011-01-29 13 views
5

Bir db yapabileceğimi biliyorum: veritabanı tabloları oluşturmak ve oluşturmak veya db: yeni bir sürüme geçmek, ancak yapmak istediğim şemayu varolan bir veritabanından (tüm tablolarda) almak ve her biri için model oluşturmaktır.Ruby on Rails mevcut bir veritabanı şemasını içe aktarmanın bir yolunu mu kullanıyor?

ActiveRecord bunu yapma yeteneğine sahip mi? Teşekkürler!

+1

Varolan/eski tablolar için el ile model oluşturmak zor değil. Basit bir modelle başlayın ve oluşturulan tablename, birincil anahtar ve alan adlarını alın. Rail'in konsolunu çalıştırın ve ilk kayıt için bir bulma komutu oluşturun. Modele ince ayar yapmak için neye ihtiyacınız olduğunu size sağlayacak olan SQL'i göreceksiniz. Çoğu eski tablo alanı adlandırma, ActiveRecord'un varsayımlarını destekleyecek ve bu nedenle düzeltmeniz gerekecektir. Bunu yapmak için birkaç veri tabanını bir araya getirmek zorunda kaldım ve bir kez asıldığımda oldukça hızlı geçti. Göçmenleri kullanmayın - DBA, senden nefret ederse senden nefret edecek. –

+0

DO dışında geçişleri kullanın. Veritabanı yapılandırması, dağıtım sürecinin bir parçasıdır ve veritabanınızın uygulamanızla eşleştiğinden emin olmak için dağıtımlarınızla geçişler kullanmalısınız. DBA'lar, tablolarınızın tasarımında yer almalı, ancak şemanızın dağıtımını içermemelidir. – xaxxon

cevap

3

Hayır. ActiveRecord bir ORM'dir, bu nedenle veritabanı şemaları oluşturma veya model oluşturma ile ilgili bir şey yoktur. Rayların bununla ilgili herhangi bir fikri yok.

Veritabanı geçişlerini yazmanız ve bunu kendiniz yapmanız gerekir.

1

Bir çeşit yol var. Yeni bir Rails 2.2 uygulaması oluşturun (2.3 veya 3.0 olamaz, mücevher 2007'den beri güncellenmemiştir). Daha sonra Magic Model Generator gemini kurun ve kullanın.

Bu, varolan veritabanınıza bakacak ve sihir gibi ondan tüm modelleri ekleyecektir. Temel ActiveRecord model dosyalarının yapısı Rails 3'te oldukça benzer olduğundan, bunları mevcut projenize kopyalayabilir ve gerekirse değiştirebilirsiniz.