2016-04-14 19 views
0

Monologue Gem ve Gem kullanıyorum.Rails autoload_path Kullanılıyor, sabit beklenen alt klasör için otomatik olarak yüklenemedi

Bazı sunum modellerini içeren alt dizinlerimi yüklemek için config autoload_paths kullanıyorum.

Rails 4: organize rails models in sub path without namespacing models?

app/config/application.rb

config.autoload_paths += Dir[Rails.root.join('app', 'models', '{*/}')] 

Sorunum, inanıyorum, ben Monolog Kullanıcı modelini geçersiz kılmak için gerektiğinde kaynaklanıyor. Ben yerel bir dosya

app/modeller/monolog/user.rb

class Monologue::User < ActiveRecord::Base 
    # code 
end 
Ben de uygulamanın kullanıcı modeli

oluşturulan Bunu yapmak için

app/modelleri/user.rb de Ben recieving am

class User < ActiveRecord::Base 
    # code 
end 

hata

olduğunu 210

yakut-2.1.5/mücevherler/ActiveSupport-4.1.1/lib/active_support/dependencies.rb: 481: `load_missing_constant 'in: özdevinimli_yükle sabit Kullanıcı edemeyen beklenen /Users/Paylaşımlı/kod/kindrdfood için /RecRm/app/models/monologue/user.rb Sen özdevinimli_yükle yolunun (app/models/monologue) içine sınıfları ad alanının bir kısmını ekledik o (LoadError)

cevap

0

tanımlar.

Otomatik yükleme yolunu olduğu gibi bırakın. app/models yolu zaten dahil edilmiştir. Raylar, henüz mevcut değilse, belirli bir sınıf adına eklenecek uygun bir dosya bulmaya çalışır. Yükleme yolundaki değişiklikiniz olmadan, User, app/models/user.rb otomatik olarak yüklenmeli ve Monologue::User, app/models/monologue/user.rb numaralı yüklemeyi otomatik olarak yüklemelidir.

Rails'in aslında ne yaptığı, sınıfınızda underscore yöntemini çağırıyor (sırasıyla dizgi gösterimi). Yani bir Raylar konsolda, böyle bir şey yapabileceğini:

>> "Monologue::User".underscore 
=> "monologue/user" 

>> "User".underscore 
=> "user" 

Düzenleme: Eğer raylar özdevinimli_yükle özelliği özel yük pathes eklemek istiyorsanız

, ben içine koymak değil tavsiye ederim Listede zaten bulunan bir klasör. Belki böyle bir şey:

config.autoload_paths << File.join(config.root, "app/decorators") 
config.autoload_paths << File.join(config.root, "app/workers") 
config.autoload_paths << File.join(config.root, "lib") 
+0

Yanıt için TY. Otomatik yük yolu, bu SO yayınında gösterildiği gibi sunucu/dekoratör modelleri için klasörler içerecek şekilde ayarlanır. Http://stackoverflow.com/q/18934115/2842709 – MicFin

+0

Yorumunuzu yansıtacak şekilde cevabı güncelledim – jack

İlgili konular