2013-01-09 9 views
5

Od szyn 3.2.9 Nie mogę przechowywać modeli w podfolderach. W moim app mam tego drzewa:Szyny 3.2.9 i modele w podfolderach

models 
-type_models 
-assets 
-user 
-concerns 

Również w environment.rb jest

config.autoload_paths += Dir["#{config.root}/app/models/*"] 

Wszystkie rzeczy było ok do szyn 3.2.9. Teraz mam błąd "Nieznana stała". Nie chcę mieć przestrzeni nazw modelu i naprawiać wszystkich aplikacji, aby używać modeli z odwzorowaniem nazw.

Warning: Error loading /var/www/my_app/app/models/type_models/context_type.rb: 
uninitialized constant TypeModels::ContextType 

plik context_type.rb:

class ContextType ... end 
+3

Dlaczego nie chcesz przestrzeni nazw we wszystkich modelach? Taka jest konwencja. – Baruch

+0

Bo było ok w 3.2.8? –

+0

znalazłeś rozwiązanie? – Lichtamberg

Odpowiedz

0

spróbuje użyć:

config.autoload_paths += Dir["#{config.root}/app/models/**/"] 
+1

Ostrzeżenie: Błąd podczas ładowania /var/www/my_app/app/models/type_models/context_type.rb: niezainicjalizowane TypeModels stałe :: ContextType –

+0

Patrz: http: //stackoverflow.com/questions/18934115/rails-4-organize-rails-models-in-sub-path-without-namespacing-models Czy ponownie uruchomiłeś aplikację po zmianie? – RubeOnRails

-1

Owiń class ContextType ... end do modułu:

module TypeModels 
    class ContextType 
    # blah blah 
    end 
end 
0

w config/application.rb:

config.autoload_paths += %W(type_models assets user concerns).map { |folder| "#{config.root}/app/models/#{folder}"} 

w models/type_models/context_type.rb:

class TypeModels::ContextType < ActiveRecord::Base 
    ... 
end 

Restart Rails i gotowe!