2014-07-04 14 views
6

Modellerimi değiştirdiğimde AR geçişleri oluşturmalı mıyım? Mongoid ve MongoDB kullanıyorum bu yüzden herhangi bir fayda göremiyorum. Düşünebildiğim tek fayda, bir alanı yeniden adlandırmaktır - ancak küçük bir senaryo ile de yapabilirim. Bu işe yarar mı? Benim bağırsağım bana göçmene ihtiyaç duymadığımı söylüyor, ama daha fazla deneyime sahip birinden duymak isterim.Rails/Mongoid/MongoDB ile geçişleri kullanmak anlamlı mıdır?

En iyi uygulama nedir? MongoDB ile geçişleri kullanmalı mıyım?

+2

PHP'de Yii ile öğrendiğim gibi geçişleri hala yapıyorsunuz, birçok kişi hala MongoDB ile geçiş scripti kullanma senaryoları var, bunu MongoDB Yii ext – Sammaye

+0

@Sammaye'ye eklemek zorundaydılar Bu senaryolar nedir? – xx77aBs

+2

Bir senaryo standartlaştırma ile, han dle uygulamasında bir şeyler yapmanın sorunu, bu size buggy ve kirli kod olsun. Veritabanında yaparsanız, bu sorunu çözer. Bir diğeri Yii'deki özellikleri değiştirmeye karar verdiğinizde. Zihnimi değiştirmemi sağlayan Yii forumlarında bana başka bir poz verilmişti ama şimdi hatırlayamıyorum. – Sammaye

cevap

8

MongoDB (2.6'da olduğu gibi) herhangi bir sunucu tarafı şema zorlaması sağlamaz, veri geçiş komut dosyaları kesinlikle gerekli değildir. Bu özellikle gelişim hızı için yararlı olabilir. Bununla birlikte, iyi bir "veri hijyeni" uygulamak ve farklı dağıtımlarda tutarlılığı sağlamak istiyorsanız, üretim verileriniz için geçişler oluşturmanız yine de mantıklı olabilir.

Örneğin

:

  • çıkarmadan kullanılmayan alanlar
  • yeni Gerekli alanları
  • ayar varsayılan değerler
  • adlandırma alanları ekleyerek
  • yükleme verileri/fikstürler
  • sağlanması gerekli indeksleri
  • gerekli

Uygulama kodunuzda yukarıdaki komutlardan birini veya istisna durumlarını ele alarak yukarıdakilerden herhangi birini yapma seçiminiz kesinlikle vardır. Örneğin, düzenleme için veritabanından belgeler yüklendikçe, eksik alanları veya varsayılanları ekleyebilirsiniz.

Özellikle Mongoid için mongoid_rails_migrations gemini denemek isteyebilirsiniz.

1

Mongo DB belgeleri şema değil, bu nedenle geçişlere gerek yoktur. Sadece sevdiği mongoid modellerinde alanları tanımlayabilirsiniz:

field :name, type: String

desteklenen alanlar için mongoid documentation edin.

İlgili konular