2012-04-26 18 views
5

Oldukça büyük bir projede, derin bir model yuvalama problemiyle karşılaştım.Ruby on Rails iç içe derin model yuvalama

class Communication::Conversation::ForProposal < Communication::Conversation::Base 
    ... 
end 

ve dahası biz böyle devam tablo_ismi, class_name, foreign_keys ve belirtmeniz gerekir her zaman: Örneğin bir böyle bir model vardır.

Hangi alternatifleri biliyorsunuz ve sizin fikrinizdeki modeller nasıl adlandırılmalıdır?

+1

Modelleri adlandırma. –

+0

@Beerlington hiç? Bazen mantıklı. Örneğin, projede birlikte çalışan birkaç modelden oluşan bir alt sisteminiz varsa. –

+0

Arkadaşlarımla iletişim kurduğum için, yuvalama işleminin STI modelleri ve kontrolörler için Admin :: ve kullanıcı parçalarını ayırmak için uygun olduğu sonucuna vardık. Başka herhangi bir şey? – makaroni4

cevap

0

Karışımlar kullanmaya dikkat etmelisiniz. Kodunuzu, daha temiz bir koda yönlendiren işlevselliklere göre düzenlemenize yardımcı olur. Takip eden sayfa iyi açıklıyor.

http://juixe.com/techknow/index.php/2006/06/15/mixins-in-ruby/

ben GitHub üzerinde Raylar için bazı kaynak koduna bakılarak edilmiş ve çok temiz. Miksleri yoğun olarak kullanırlar. Rayların son sürümlerinde

https://github.com/rails/rails/tree/master/activemodel/lib

+0

Karışımları kullanmak modelleri birlikte gruplandırmaz. Diğer veritabanlarına (bu bir geçiş önlemi olsa da) ek bağlantılarım var ve bazı veritabanları aynı tablo isimlerine sahip, bu yüzden ad boşluğu da adların çarpışmasına neden oluyor. –

+0

REXML yardımcı programının belgelerine bir örnek olarak REXML'yi dahil etmenin ve sonra ad alanını nitelendirmemenin bir örneğini görüyorum. http://www.germane-software.com/software/rexml/docs/tutorial.html –

0

uygulama boyutunun/modeller altında bir dizinde koyarak modellerinizi ad alanı olabilir. Bu modeller için uygulama/model/iletişim/sohbet deneyebilirsiniz.

+0

Bu, modelleri kullanırken ad alanını belirtme zorunluluğuyla ilgilenmez. –

+0

Nerede olduğunuzu ve isimleri belirtmek istemediğinizde net değilim. Eğer her birini yazarken ve diğerleriyle konuşursanız, bir şeyleri açıklığa kavuşturmak için bir modüle koyabilirsiniz. Bu modül içinde önek gerektirmeyen sınıflara herhangi bir referans yapmalıdır. Modülün dışındaki ad alanını belirtme gereksinimini azaltmaya çalışıyorsanız, 'ModuleName' gibi bir şeye ihtiyacınız vardır, ancak bunun tüm modülü geçerli sınıfa yükleyeceğini düşünüyorum. – LordJavac